關於matlab中用fft分析信號頻譜爲何要乘2/N的思考

 注意到用matlab分析信號頻譜時必須要乘個2/N才能得到正確的幅度譜幅值,如下:


A=50;       % A 幅度值
fs=500; % fs 採樣率
F=50;   % F 頻率,小於採樣率的一半(奈奎斯特)
N=100;   % N 採樣個數
dt=1/fs;    %時間間隔
t=0:dt:(N-1)*dt;    %時間向量
freqPixel=fs/N;     %頻率分辨率,即點與點之間頻率單位
y=A*sin(2*pi*F*t);	%正弦波
%信號頻譜
freq=fft(y,N)*2/N;%做離散傅里葉
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %雙邊  
plot(w,freq_d);

可以看到結果正確

之後查詢書本發現,我之前以爲信號x(n)的DFT變換X(K)的幅值就是其頻譜幅值,這個想法是錯誤的!

首先,DFT的定義爲: X\left ( K \right )=\sum _{n=0}^{N-1}x(n)W_{N}^{kn}

由於W_{N}^{kn}的週期性,所以DFT具有隱含週期性,X(K)實質上是x(n)的以N爲週期延拓的序列x((n))N的離散傅里葉級數的頻譜特性,故要搞清楚DFT與其模擬信號頻譜的關係還要從週期序列傅里葉變換入手;

e^{jwn} \leftrightarrow \sum _{r=-\propto }^{\propto }2\pi \delta (w-w_{0}-2\pi r),則有

x((n))_{N}=\frac{1}{N}\sum _{n=0}^{N-1}X(k)e^{jwn}\leftrightarrow \sum _{k=0}^{N-1}\frac{2\pi X(k)}{N}\sum _{r=-\propto }^{\propto }\delta (w-\frac{2\pi }{N}k-2\pi r)=\frac{2\pi }{N}\sum _{k=-\propto }^{\propto }X(k)\delta (w-\frac{2\pi }{N}k)

 即

X(e^{jw})=\frac{2\pi }{N}\sum _{k=-\propto }^{\propto }X(k)\delta (w-\frac{2\pi }{N}k)

到這一步可以看出,模擬信號傅里葉變換是將信號以正弦信號爲形式的各次諧波,而正弦信號的傅里葉變換與其DFT之間正好差一個2/N的係數

cos(w_{0}n)\leftrightarrow \pi \sum _{r=-\propto }^{\propto }[\delta (w-w_{0}-2\pi r+\delta (w+w_{0}-2\pi r]

以上只是我的個人理解,如有錯誤還請指正,謝謝閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章