1) 頻率采樣法
頻率采樣法是從頻域出發,將給定的理想頻率響應Hd(ejw)加以等間隔采樣,得到
然后以此Hd(k)作為實際FIR數字濾波器的頻率特性的采樣值H(k),即令
由H(k)通過IDFT可得有限長序列h(n)為
將上式代入到Z變換中可得
式中, 為內插函數,有
2) 頻率采樣法的優化設計
為了提高阻帶的衰減,減小通帶的波動,可以采用頻率采樣的優化設計法,即在間斷點區間內插一個或幾個過渡帶采樣點。
過渡帶采樣點的個數m與濾波器阻帶最小衰減 的經驗數據如下表所示,可以根據給定的阻帶最小衰減 來選擇過渡帶采樣點個數m。
增加過渡帶采樣點可以使通帶和阻帶內波紋幅度減小。當N確定時,m越大,過渡帶越寬。如果給定過渡帶寬度 ,濾波器長度N必須滿足如下估算公式:
二、實驗步驟與結果
1、 認真閱讀并輸入實驗原理與方法中介紹的例子,觀察輸出數據和圖形,理解每一條語句的含義。
T=0.38;
datB=pi/16;wc=pi/3;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);title('理想單位脈沖響應');
xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
2、用頻率采樣法設計一個FIR數字低通濾波器,3dB截止頻率wp=0.4p,采樣點數分別取N=21和N=16,分別顯示理想、實際幅頻特性和脈沖響應曲線,觀察采樣點數對濾波器特性的影響。
wc=0.4*pi;datB=4*pi/21;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);
title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);
title('理想單位脈沖響應');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);
title('實際幅頻響應');
clear;
T=0.38;
wc=0.4*pi;
N=21;
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);axis([0,N+2,-0.2,0.5]);
title('理想單位脈沖響應');xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
wc=0.4*pi;datB=4*pi/61;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);
title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);
title('理想單位脈沖響應');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);
title('實際幅頻響應');
3、在第(2)題的要求下。再在過渡帶中增加一個采樣點T,取值0.38.要求顯示幅頻特性曲線,觀察增加過渡帶采樣點后對濾波器特性的影響。
程序如下:
T=0.38;
wc=0.4*pi;
N=61;
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);axis([0,N+2,-0.2,0.5]);
title('理想單位脈沖響應');xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
1) 頻率采樣法
頻率采樣法是從頻域出發,將給定的理想頻率響應Hd(ejw)加以等間隔采樣,得到
然后以此Hd(k)作為實際FIR數字濾波器的頻率特性的采樣值H(k),即令
由H(k)通過IDFT可得有限長序列h(n)為
將上式代入到Z變換中可得
式中, 為內插函數,有
2) 頻率采樣法的優化設計
為了提高阻帶的衰減,減小通帶的波動,可以采用頻率采樣的優化設計法,即在間斷點區間內插一個或幾個過渡帶采樣點。
過渡帶采樣點的個數m與濾波器阻帶最小衰減 的經驗數據如下表所示,可以根據給定的阻帶最小衰減 來選擇過渡帶采樣點個數m。
增加過渡帶采樣點可以使通帶和阻帶內波紋幅度減小。當N確定時,m越大,過渡帶越寬。如果給定過渡帶寬度 ,濾波器長度N必須滿足如下估算公式:
二、實驗步驟與結果
1、 認真閱讀并輸入實驗原理與方法中介紹的例子,觀察輸出數據和圖形,理解每一條語句的含義。
T=0.38;
datB=pi/16;wc=pi/3;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);title('理想單位脈沖響應');
xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
2、用頻率采樣法設計一個FIR數字低通濾波器,3dB截止頻率wp=0.4p,采樣點數分別取N=21和N=16,分別顯示理想、實際幅頻特性和脈沖響應曲線,觀察采樣點數對濾波器特性的影響。
wc=0.4*pi;datB=4*pi/21;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);
title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);
title('理想單位脈沖響應');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);
title('實際幅頻響應');
clear;
T=0.38;
wc=0.4*pi;
N=21;
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);axis([0,N+2,-0.2,0.5]);
title('理想單位脈沖響應');xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
wc=0.4*pi;datB=4*pi/61;
m=1;N=(m+1)*2*pi/datB+1;
N=N+mod((N+1),2);
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);
axis([0,2,-0.1,1.2]);
title('理想幅頻響應');
subplot(2,2,2),plot(hn);
axis([0,65,-0.2,0.5]);
title('理想單位脈沖響應');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);
title('實際幅頻響應');
3、在第(2)題的要求下。再在過渡帶中增加一個采樣點T,取值0.38.要求顯示幅頻特性曲線,觀察增加過渡帶采樣點后對濾波器特性的影響。
程序如下:
T=0.38;
wc=0.4*pi;
N=61;
Np=fix(wc/(2*pi/N));
Ns=N-2*Np-1;
Ak=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
Ak(Np+2)=T;Ak(N-Np)=T;
thetak=-pi*(N-1)*(0:N-1)/N;
Hk=Ak.*exp(j*thetak);
hn=real(ifft(Hk));
Hw=fft(hn,1024);
wk=2*pi*[0:1023]/1024;
Hgw=Hw.*exp(j*wk*(N-1)/2);
wa=[0:N-1]/N*2;
subplot(2,2,1),plot(wa,Ak);axis([0,2,-0.1,1.2]);title('理想幅頻響應');
subplot(2,2,2),plot(hn);axis([0,N+2,-0.2,0.5]);
title('理想單位脈沖響應');xlabel('n');ylabel('h(n)');
subplot(2,2,3),plot(wk/pi,abs(Hgw));
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
三、 實驗分析總結
通過本次實驗,我對對頻率采樣法設計FIR 數字濾波器的基本原理的理解,掌握了在頻域優化設計FIR數字濾波器的方法,也了解MATLAB設計FIR數字濾波器的編程方法。對相位FIR濾波器的扶貧特性和相頻特性更加熟悉,加深了我對窗函數法設計 FIR數字濾波器的基本原理的理解。了解 了MATLAB 有關窗函數法設計的子函數以及各種不同窗函數對濾波器性能的影響。
axis([0,2,-0.1,1.2]);title('實際幅頻響應');
subplot(2,2,4),plot(wk/pi,20*log10(abs(Hgw)));
axis([0,1,-70,10]);title('實際損耗函數');
三、 實驗分析總結
通過本次實驗,我對對頻率采樣法設計FIR 數字濾波器的基本原理的理解,掌握了在頻域優化設計FIR數字濾波器的方法,也了解MATLAB設計FIR數字濾波器的編程方法。對相位FIR濾波器的扶貧特性和相頻特性更加熟悉,加深了我對窗函數法設計 FIR數字濾波器的基本原理的理解。了解 了MATLAB 有關窗函數法設計的子函數以及各種不同窗函數對濾波器性能的影響。
|