1. 程式人生 > >離散傅立葉變換(DFT)

離散傅立葉變換(DFT)

用途:將一組時域訊號變換到頻域,分析該訊號中各頻率分量。
效果:長度為n的數列x 的DFT是另一組長度為n的數列y

yp+1=j=0n1ωjpxj+1
其中,ω=e2πi/n,p[0,n1]

DFT 效果圖
假設取樣頻率為Fs,取樣點數為n,則DFT的結果為長度為n的複數數列。頻率解析度為Fsn
第k (k1,kn2)個點的頻率為Fk=(k1)Fsn,模為Ak=a2k+b2k,相位為Pk=atan2(bk,ak)。k點對應的訊號的表示式為:2Aknsin(2πtFk+Pk)。對於k=1點的訊號,是直流分量,幅度即為A1n.

案例:

Fs = 1000;            % 取樣頻率
T = 1/Fs; % 取樣週期 L = 1000; % 訊號長度 由此知,頻率解析度為 1hz t = (0:L-1)*T; % 時間相量 S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 原始函式 Y = fft(S); P2 = abs(Y/L); % 每個量除以數列長度 L P1 = P2(1:L/2+1); % 取交流部分 P1(2:end-1) = 2*P1(2:end-1); % 交流部分模值乘以2 f = Fs*(0:(L/2))/L; plot(f,P1) title('Single-Sided Amplitude Spectrum of S(t)'
) xlabel('f (Hz)') ylabel('|P1(f)|')

這裡寫圖片描述