MATLAB fft y轴含义

MATLAB fft y axis meaning

我有一个随时间变化的信号 (a),我取了它的 fft。我需要将频率相关的加权因子乘以 fft 的 y 轴值;但是如果我这样做:

xdft = fft(a);
xdft = xdft(1:length(x)/2+1); % only retaining the positive frequencies
freq = Fs*(0:(L/2))/L; 

和 plot(freq,xdft) 我在信号的正确频率处得到了 ~2000 的峰值 fft 值(y 轴)。但原始信号峰值(振幅)约为 46。我需要知道数字之间的关系,以便我可以对 fft 值进行加权。

你忘了除以 DFT 长度。看看this example

考虑 fft 的输出是复杂的。所以如果你想绘制实际功率谱密度,你应该像这样将输出乘以它的复共轭:

Pyy = xdft.*conj(xdft)/L;

编辑: 对于振幅谱,你应该这样做:

xdft=abs(xdft/L); % same as sqrt(xdft.*conj(xdft))/L
Y=xdft(1:L/2+1); % copy half of data since the other half is redundant
Y(2:end-1) = 2*Y(2:end-1); % correct the amplitudes

编辑 2: 只是想指出一本非常棒的书(我认为是最好的),它以一种非常简单易懂的方式解释了傅里叶级数的工作原理(以及更多)。

Alan V. Oppenheim、Alan S. Willsky 和 ​​S. Hamid Nawab。 1996。信号与系统(第 2 版)。 Prentice-Hall, Inc.,美国新泽西州上马鞍河。