首页 > 解决方案 > FFT后幅度错误[Matlab]

问题描述

我需要找到信号的频率和幅度。我的信号是这样的(Number of Samples= 9500500Hz):

![在此处输入图像描述

我为 FFT 尝试了以下代码(在此处找到):

Fs=500;
L=numel(pitch);
Y=fft(pitch);
f = Fs*(0:(L/2))/L;
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
figure
plot(f,P1)

我得到的结果是这个(amplitude=7.501): 在此处输入图像描述

但这并不准确。如果我从峰值计算振幅amplitude=9.3,看起来是正确的。

为什么 FFT 给出的结果不准确,如何使用 FFT 或任何其他方法找到正确的结果(频率 + 幅度)?我有几个信号通常很嘈杂,因此无法找到峰值。

标签: matlabsignal-processingfftfrequency

解决方案


推荐阅读