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.,美国新泽西州上马鞍河。
我有一个随时间变化的信号 (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.,美国新泽西州上马鞍河。