信号 fft 的幅度错误

2023-12-28

我正在尝试计算使用 Python 进行快速傅立叶变换。 我正在使用函数 fft.fft 并将其应用于简单的正弦信号。 这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

frames=100
fps=1000

t=np.linspace(0, frames, frames)/fps
x=np.sin(2*np.pi*80*t)+1
plt.plot(t, x, 'o-')
plt.title('seno')
plt.ylabel('sin')
plt.xlabel('time $s$')
plt.grid()
plt.show()

#calculating the fft
sin_fft=np.fft.fft(x)

#calculating the absolute value
sin_fft_abs=np.ones(len(sin_fft))

for i in range(len(sin_fft)):
    sin_fft_abs[i]=np.sqrt((sin_fft[i].real**2)+(sin_fft[i].imag**2))

sin_fft_final=sin_fft_abs/frames

#calculating the frequencies
inc=fps/frames
freq=np.linspace(0, fps-inc, fps/inc)

plt.plot(freq, sin_fft_final, 'o-')
plt.xlim(xmax=fps/2)
plt.title('seno fft')
plt.ylabel('sin fft')
plt.xlabel('f $Hz$')
plt.grid()
plt.show()

它可以找到正确的偏移(在这个简单的情况下为 1),但与正弦频率(在本例中为 80)相对应的峰值幅度始终是信号幅度的一半。 我不知道为什么它找到了正确的偏移量,但找不到正确的幅度!

如果有人能帮助我,我将不胜感激 多谢, 弗朗西斯卡


这是傅立叶变换的一个属性,也出现在 FFT 中。实际上,如果绘制完整数据,您会看到第二个峰值。您可能想检查numpy.fft.fftfreq https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.fft.fftfreq.html#numpy.fft.fftfreq这实际上是什么频率。 FFT 中的频率通常为 [0, df,..., fmax, -fmax, ..., -df]。所以你的第一个峰值是omega,第二个在-omega。这是因为这是一个复杂的分析,意味着傅里叶核是exp( -1j * omega * t). As sin( omega * t) = 1 / 2j * ( exp( 1j * omega * t) - exp( -1j * omega * t)),你会得到两个峰值。

在相反方向,具有峰值幅度A你的信号将是A * exp( 1j * omega * t) + (-A * exp( 1j * (-omega) * t)。如果你扩展这个你会得到1j * 2 * A * sin( omega * t ). Hence A is and must be正弦波振幅的一半。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信号 fft 的幅度错误 的相关文章

随机推荐

  • 流体宽度固定位置

    Imagine div class outer div class inner div div Where outer是列结构的一部分 其宽度是百分位数 因此是流动的 inner代表一个fixed应填充 100 宽度的位置元素 outer元
  • Python:导入 scipy 导致回溯引用已删除的文件

    当我尝试在 Python 解释器 版本 2 6 1 中导入 scipy 模块 版本 0 11 0b1 时 收到以下错误 Traceback most recent call last File
  • 在 mailto 上打开 Gmail:操作

    如何强制网络浏览器导航到 Gmail 并创建 如果已登录 新信件 并在点击时填写 收件人 字段mailto email protected cdn cgi l email protection 有一个油猴脚本 http blog monst
  • 如何将自定义业务逻辑添加到 Acumatica 框架的 Actions 中?

    我向 SOShipment 添加了一个自定义字段 并且希望在订单输入或通过处理订单屏幕调用 CreateShipment 操作时设置其值 我怎么做 为 SOOrderEntry 创建一个图形扩展并添加一个 Action 方法 如下所示 us
  • 检测 iFrame 中的重定向

    我可能在这里问了错误的问题 所以我将提供一些关于我想要完成的任务的细节 我使用第三方网络应用程序来跟踪支持票证 他们提供了我的用户填写的表单的代码 并将其提交到他们的域 我想在两个不同的域上使用此表单 但不幸的是第三方使用单个硬编码的重定向
  • 如何解决 rmarkdown 中的此错误消息?

    我刚刚开始探索rmarkdown包裹 我不使用Rstudio 我使用默认的 R 环境 我所做的如下 我创建了一个新的 R 文档 开始输入几行rmarkdown格式 保存文件Rmd扩大 我将文件保存在工作目录中 我安装了pandoc使用 pk
  • 我需要在单击后退按钮时最小化 Android 应用程序

    我需要在按下后退按钮时最小化应用程序 我使用以下代码来捕获硬件后退按钮单击事件 帮助我最小化按后退键的代码 Override public boolean onKeyDown int keyCode keyEvent event switc
  • 数据实体 > 领域对象 > ViewModel,每个都有截然不同的数据结构

    这是关于数据实体 域对象和 ViewModel 之间映射的一般问题 我可能问得不对 但希望我能理解它 下面是一个简化的问题 假设我有一个实体框架模型 它 1 1 映射到我的数据库表 但我的域对象可能不相同 并且我的 ViewModel 又完
  • 与“LPCWSTR”类型的参数不兼容

    include stdafx h include
  • 在程序的某些部分显式禁用 MySQL 查询缓存

    在 Django 项目中 一些 cronjob 程序主要用于管理或分析目的 例如生成网站使用统计数据 轮换用户活动日志等 我们可能不希望MySQL在这些程序中缓存查询以节省内存使用并提高查询缓存效率 是否可以在这些程序中显式关闭 MySQL
  • 为什么我的 HTML 文本框在移动设备和桌面上的显示效果不一样?

    由于某种原因 我的 HTML 文本框没有居中 当我在桌面和移动设备上查看它们时 它们的显示方式有所不同 一个被拉伸 而另一个未居中 我可以让我的 HTML 代码在中显示相同吗 两种情况 div div h1 style text align
  • onload 和 Jquery read()。它们适用于任何 DOM 吗?比如table或者div?

    我需要使用 javascript 脚本将动态内容放在 div 上 该 div 位于页面顶部 因此它会先加载 然后再加载其下方的其他内容 而且下面真的有很多东西 因此 当我将脚本放在ready 或onload上时 div将空2 3秒 同时显示
  • 使用 jQuery 删除表格行

    以下是我的代码 Script document ready function click click function table append tr td nbsp td tr remove click function table re
  • 在同一个 Docker Hub 存储库中进行链式自动构建

    由于构建时间限制 https stackoverflow com a 34588866 865719在 Docker Hub 上 我决定拆分Dockerfile将耗时的自动构建分为三个文件 每一个 子构建 都会在 Docker Hub 的时
  • 为什么 sem_open 与 fork() 一起使用而不使用共享内存?

    即使信号量不在共享内存中 该程序也可以工作 我测试过 请注意我如何在 fork 之前创建一次变量 另一方面 用创建的信号量sem init 需要在共享内存中才能工作 但这仍然是一个sem t结构 那么为什么它不需要共享内存呢 的内容是sem
  • 如何删除字符串中除点和逗号之外的所有特殊字符

    我有一个包含许多特殊字符和文本的句子 我想删除除点和逗号之外的所有特殊字符 例如 这就是 u HI Jhon how are you 我正在尝试生成以下字符串 HI Jhon how are you 我试过这个 u HI Jhon how
  • Swagger/OpenAPI 多重安全要求和副作用?

    我正在为 Swagger OpenAPI 实现一个代码生成器 但是 我在实现安全要求时遇到了问题 这些要求被定义为对象列表 列表成员是替代 或 对象成员是与 例如 a b c d 这应该导致 a b 光盘 然而 在实现这一点时 我遇到了实际
  • .Net 中是否有与 java.util.concurrent.Executor 等效的程序?

    拥有一组长期运行的离散任务 从文本文件中解析数十 数千行 合并为对象 操作和持久化 如果我在 Java 中实现这一点 我想我可能会为文件中的每一行或每 X 行 即块 的任务添加一个新任务到执行器 对于我正在使用的 Net 我不太确定 我怀疑
  • Xcode iOS 框架图标含义

    当使用 Xcode 7 3 将 iOS 框架添加到 iOS 项目时 常规 gt 链接的框架和库 Xcode 使用两个不同的图标来表示 iOS 框架 一个看起来像一个白色立方体 另一个看起来像一个工具箱 这些图标分别代表什么意思 工具箱图标代
  • 信号 fft 的幅度错误

    我正在尝试计算使用 Python 进行快速傅立叶变换 我正在使用函数 fft fft 并将其应用于简单的正弦信号 这是我的代码 import numpy as np import matplotlib pyplot as plt frame