我收到了以下1Hz/10Hz个信号

import numpy as np

total_time = 5
sampling_frequency = 200

t = np.linspace(0, total_time , total_time * sampling_frequency)
signal = np.sin(2 * np.pi * 1 * t) + 0.5 * np.sin(2 * np.pi * 10 * t)

plt.plot(t, signal)

enter image description here

这就是我得到的离散FFT

fft_spectrum = np.fft.rfft(signal)
fft_spectrum_abs = np.abs(fft_spectrum)

freq = np.fft.rfftfreq(signal.size, d=1./sampling_frequency)

plt.plot(freq, fft_spectrum_abs)
plt.xlabel("frequency, Hz")
plt.ylabel("amplitude, units")
plt.show()

enter image description here

我本来希望1Hz处的峰值幅度为1,10处的峰值幅度为0.5,给定我的原始信号.我有一个因子500关闭,但看看我得到的值在图上—这个因子是从哪里来的,我如何恢复原始振幅?

推荐答案

您需要通过除以样本数来zoom 输出,在本例中为1000.然后,因为输入是实数,这是一个单边FFT,没有负频率仓,你乘以2.这将给你一个1和0.5的振幅你要找.

Python相关问答推荐

更改matplotlib彩色条的字体并勾选标签?

对某些列的总数进行民意调查,但不单独列出每列

如何根据参数推断对象的返回类型?

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何更改分组条形图中条形图的 colored颜色 ?

对所有子图应用相同的轴格式

如何创建一个缓冲区周围的一行与manim?

Stacked bar chart from billrame

如何根据一列的值有条件地 Select 前N组?

joblib:无法从父目录的另一个子文件夹加载转储模型

为什么\b在这个正则表达式中不解释为反斜杠

如何使regex代码只适用于空的目标单元格

pandas:对多级列框架的列进行排序/重新排序

python panda ExcelWriter切换动态公式到数组公式

polars:有效的方法来应用函数过滤列的字符串

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名

普洛特利express 发布的人口普查数据失败