我有一个随时间变化的信号(a),我将其作为参考。我需要将频率相关的加权因子乘以fft的y轴值;但是,如果我这样做:
xdft = fft(a);
xdft = xdft(1:length(x)/2+1); % only retaining the positive frequencies
freq = Fs*(0:(L/2))/L;
Run Code Online (Sandbox Code Playgroud)
然后plot(freq,xdft)在正确的信号频率下获得〜2000的峰值fft值(y轴)。但是原始信号的峰值(幅度)约为46。我需要知道数字之间的关系,以便可以对fft值进行加权。
您忘记了除以DFT长度。看一下这个例子。
考虑到的输出fft很复杂。因此,如果要绘制有功功率谱密度,应将输出乘以其复共轭,如下所示:
Pyy = xdft.*conj(xdft)/L;
Run Code Online (Sandbox Code Playgroud)
编辑:对于振幅频谱,您应该执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
编辑2:只是想指向一本非常好的书(我认为是最好的书),它以一种非常容易理解的方式解释了傅立叶级数的工作原理(以及更多)。
艾伦·奥本海姆(Alan V. Oppenheim),艾伦·S·威尔斯基(Alan S. Willsky)和哈米德·纳瓦布(S. Hamid Nawab)。1996年。《信号与系统》(第二版)。美国新泽西州上萨德尔河Prentice-Hall公司。