为什么等幅信号分量的峰值大小在 FFT 频域表示中不相等?

问题描述

我在这里包含了我的原始 Matlab 代码,但我认为对于非 Matlab 用户来说,这已经足够清楚,可以理解这些行在做什么。我也在 Python 上对此进行了测试,并得到了相同的结果。我所做的基本上是将三个不同频率但幅度相等的正弦曲线相加,然后分解组合信号以观察功率谱峰值。问题是,根据采样点的数量和采样频率,峰值大小相对于彼此采用不同的比率,而不是大小相等,因为分量信号具有相同的幅度。如果我们将 FFT 视为某种形式的点积,那么为什么手动(在信号和正弦波之间)进行点积会给出正确的结果,但 FFT 取决于样本数和采样频率?谢谢。

fs = 10;
time = 0:1/fs:205; % in seconds
freqs = [0.05,0.1,0.3]; % Hz
signal = zeros(1,length(time));
for f_i = 1:length(freqs)
    signal = signal + sin(2*pi*freqs(f_i)*time);
end
power_spectrum = abs(fft(signal)).^2 % Of course I'm just skipping the trimming part here
plot(power_spectrum)

您可以在此处查看调整后的图:spectrum

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)