2016-04-25 410 views
1

我有一個隨時間變化的信號(a),我採用了fft。我需要乘以頻率相關的加權因子乘以fft的y軸值;但是如果我做的:MATLAB fft y軸的含義

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

和2000年〜情節(頻率,xdft)我得到一個峯值FFT值(Y軸)在信號的正確的頻率。但原始信號峯值(幅度)爲〜46。我需要知道這些數字是如何相關的,所以我可以衡量fft值。

回答

3

你忘了除以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 
+0

我應該在什麼時候除以DFT長度?如果我做ts = 0.1; t = 0時:TS:10; X = 10 * SIN(T); L =長度(T); FS = 1/TS; xdft = fft(x); xdft = xdft(1:length(x)/ 2 + 1); xdft = xdft /長度(xdft); freq = fs *(0:(L/2))/ L;圖(頻率,ABS(xdft));最大的y軸價值不是最大值。 x的值。 – 2one

+1

@ 2one查看幅度譜的更新。還要考慮奈奎斯特頻率和泄漏效應。 – incBrain