- 引言
由于DFT只能運用在一個有限持續時間的采樣時間間隔上,可以將DFT輸入信號看成是在所有時間輸入信號與一個矩形窗的乘積。sinc函數中的sinx/x的形狀是由于矩形窗引起的。
以下兩張圖片轉載
https://blog.csdn.net/zhiTjun/article/details/83476117
所以是由于矩形窗引起了DFT泄露。
如何最小化旁瓣呢?
這項工作通過同時將輸入時間序列在采樣間隔的起始和末尾點的振幅強制平滑為一個單一的共同值來完成。
主要窗有:三角窗,hanning窗,hamming窗。
也就是說一個輸入序列x(n)在進行DFT之前先乘以響應的窗系數w(n).
從幅頻響應圖中可以看出來,三角窗函數已經降低了旁瓣電平,但是付出的代價是三角窗的主瓣寬度是矩形窗的兩倍。不同的非矩形窗的窗函數的寬主瓣使窗口化DFT的頻率分辨率減半。
代碼由:
https://blog.csdn.net/u013346007/article/details/54178322
提供
%---------------------------------------------------------------------------
%}
%N =51
%==========================================================================
%求矩形窗的頻率響應圖
%==========================================================================
W = linspace(-pi,pi,4096);
wn0 = rectwin(51) %矩形窗函數
%20*log10(abs(WN))
[h1,w0] = freqz(wn0,1,W);
%subplotfigure(5,1,1);
subplot(511);
plot(w0/pi,20*log10(abs(h1/max(h1))));
axis([-1 1 -100 0]);
xlabel('歸一化頻率 /\pi');
ylabel('20log_{10}|W(e^{j\omega})| /dB');
title('矩形窗的傅里葉變換');
set(gca,'YTick',[-100 -80 -60 -40 -20 0])
set(gca,'XTick',[-1 :0.2: 1])
%set(gca,'XAxisLocation','top');%設置X軸在上方
%set(gca,'XAxisLocation','buttom');%設置X軸在下方
set(gca,'YAxisLocation','left'); %設置Y軸在左方
text(1,-124,'\pi');%gtext('\pi');%==========================================================================
%求三角窗的頻率響應圖
%==========================================================================
wn1 = bartlett(51)
[h1,w1] = freqz(wn1,1,W);
%figure(5,1,2);
subplot(512);
plot(w1/pi,20*log10(abs(h1/max(h1))));
%plot(w/pi,20*log10(h1/max(h1))); % 警告: 復數 X 和/或 Y 參數的虛部已忽略
axis([-1 1 -100 0]);
xlabel('歸一化頻率 /\pi');
ylabel('20log_{10}|W(e^{j\omega})| /dB');
title('三角窗的傅里葉變換');
set(gca,'YTick',[-100 -80 -60 -40 -20 0])
set(gca,'XTick',[-1 :0.2: 1])
%set(gca,'XAxisLocation','top');%設置X軸在上方
set(gca,'YAxisLocation','left'); %設置Y軸在左方
text(1,-124,'\pi');%gtext('\pi');
%==========================================================================
%hanning 窗的頻率響應圖
%==========================================================================
wn2 = hanning(51)
[h1,w2] = freqz(wn2,1,W);
%figure(5,1,3);
subplot(513);
plot(w2/pi,20*log10(abs(h1/max(h1))));
axis([-1 1 -100 0]);
xlabel('歸一化頻率 /\pi');
ylabel('20log_{10}|W(e^{j\omega})| /dB');
title('Hanning的傅里葉變換');
set(gca,'YTick',[-100 -80 -60 -40 -20 0]);
set(gca,'XTick',[-1 :0.2: 1]);
%set(gca,'XAxisLocation','top');%設置X軸在上方
set(gca,'YAxisLocation','left'); %設置Y軸在左方
text(1,-124,'\pi');%gtext('\pi');
%==========================================================================
%hamming 窗的頻率響應圖
%==========================================================================
wn3 = hamming(51)
[h1,w3] = freqz(wn3,1,W); %離散系統頻響特性的函數freqz()
%figure(5,1,4);
subplot(514);
plot(w3/pi,20*log10(abs(h1/max(h1))));
axis([-1 1 -100 0]);
xlabel('歸一化頻率 /\pi');
ylabel('20log_{10}|W(e^{j\omega})| /dB');
title('Hamming的傅里葉變換');
set(gca,'YTick',[-100 -80 -60 -40 -20 0])
set(gca,'XTick',[-1 :0.2: 1])
%set(gca,'XAxisLocation','top');%設置X軸在上方
set(gca,'YAxisLocation','left'); %設置Y軸在左方
text(1,-124,'\pi');%gtext('\pi');
%==========================================================================
%Blackman wn1 = blackman(51)
%==========================================================================
wn4 = blackman(51)
[h1,w4] = freqz(wn4,1,W);
%figure(5,1,5);
subplot(515);
plot(w4/pi,20*log10(abs(h1/max(h1))));
axis([-1 1 -100 0]);
xlabel('歸一化頻率 /\pi');
ylabel('20log_{10}|W(e^{j\omega})| /dB');
title('Blackman的傅里葉變換');
set(gca,'YTick',[-100 -80 -60 -40 -20 0])
set(gca,'XTick',[-1 :0.2: 1])
%set(gca,'XAxisLocation','top');%設置X軸在上方
set(gca,'YAxisLocation','left'); %設置Y軸在左方
text(1,-124,'\pi');%gtext('\pi');
窗被用來提升DFT頻譜分析的準確性。
這里提出另外兩個經常使用的用于降低DFT泄露的窗函數,分別是chebyshev窗函數和kaiser窗函數。
總結
以上是生活随笔為你收集整理的3.9 降低DFT泄露的一种办法---加窗的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。