一、實驗?zāi)康?/h2>
1.掌握沖激響應(yīng)法和雙線性變換法設(shè)計IIR濾波器的原理及具體設(shè)計方法,熟悉用雙線性設(shè)計法設(shè)計低通、帶通和高通IIR數(shù)字濾波器的計算機程序;
2.熟悉模擬Butterworth濾波器的設(shè)計,掌握沖激響應(yīng)法和雙線性變換法設(shè)計數(shù)字IIR濾波器的方法。
二、實驗內(nèi)容
1、不同階次模擬巴特沃茲濾波器的頻率響應(yīng)
結(jié)論:不同階次的所對應(yīng)的濾波器的幅度大值走向一樣,但其過渡帶存在明顯的不同,階次越高,濾波器的過渡帶越小。
2、根據(jù)模擬濾波器指標(biāo),設(shè)計低通巴特沃茲濾波器
設(shè)計指標(biāo)為:通帶截止頻率fp=6kHz,通帶最大衰減ɑp =3dB,阻帶截止頻率fs= 14kHz,阻帶最小衰減ɑs=32dB。
歸一化之前的低通巴特沃茲濾波器的頻率響應(yīng):
歸一化之后的低通巴特沃茲濾波器德品頻率響應(yīng):
3、已知模擬濾波器傳輸函數(shù)H(s)為
按照不同采樣頻率Fs1=1.1Hz, Fs2=10.1Hz 使用脈沖響應(yīng)不變法將H(s)轉(zhuǎn)換為H(z)數(shù)字IIR濾波器。
不同采樣采樣頻率對應(yīng)的IIR濾波器的頻率響應(yīng)見下:
結(jié)論:不同的采樣頻率設(shè)計出的IIR濾波器的頻率響應(yīng)是明顯不一樣的,采樣頻率越高,所設(shè)計出的頻率計在pi處衰減的越大,再濾波器越接近模擬濾波器。
4 給定數(shù)字IIR指標(biāo),用脈沖響應(yīng)不變法設(shè)計IIR。
在不同的Fs下,所得到的模擬濾波器和數(shù)字濾波器的頻率響應(yīng)見下:
結(jié)論:在不同的采樣頻率下,有數(shù)字指標(biāo)所得到模擬指標(biāo)不一樣,故導(dǎo)致所設(shè)計的模擬濾波器的頻率響應(yīng)不一樣,但是,最后由模擬濾波器轉(zhuǎn)化為的數(shù)字濾波器差別不大,是符合所給的數(shù)字指標(biāo)的。
5、用雙線性變換法設(shè)計IIR,并同脈沖響應(yīng)不變法比較設(shè)計的結(jié)果。
數(shù)字濾波器指標(biāo)要求如下:
將所得的數(shù)字濾波器的頻率響應(yīng)與題目給的要求對應(yīng),可以得之所設(shè)計的濾波器符合題目的要求。文章來源:http://www.zghlxwxcb.cn/news/detail-754645.html
三、實驗結(jié)論
沖激響應(yīng)不變法設(shè)計的濾波器在直流附近的數(shù)字域與模擬域的幅頻特性相近,但雙線性變換法是以嚴重的失真換取了頻率的不混疊,這一般用于具有片段常數(shù)特性的濾波器。文章來源地址http://www.zghlxwxcb.cn/news/detail-754645.html
附-實驗源碼
% 1 利用Matlab系統(tǒng)函數(shù)計算不同階次的巴特沃茲濾波器頻率響應(yīng)
clc,clear all,close all;
freq_axis = [ 0: 0.01 :2 ]; %歸一化的頻率
N_array = [ 4 6 11 13 ]; %濾波器的階次
figure(1);
for I=1:4
N = N_array(I)
[z p k] = buttap(N) %獲得6階巴特沃茲濾波器的參數(shù)
[b a] = zp2tf( z, p, k )%得到傳遞函數(shù) tf:trans-function
disp( [ 'N=' num2str(N) '極點:' ] );
p
disp( [ 'N=' num2str(N),'零點:' ] );
z
[H ] = freqs(b, a, freq_axis);
magh = abs(H);
subplot( 2, 2, I );
plot( freq_axis, magh );
axis( [0 2 0 1] ); %限制坐標(biāo)軸
xlabel( 'w/wc -- 歸一化頻率' );
ylabel( '幅度譜' );
title( ['巴特沃茲濾波器幅度譜 N=',num2str(N)] );
end
%2 根據(jù)提出模擬IIR的指標(biāo),計算IIR的階次、系數(shù)等
J = sqrt(-1);
fp = 6e3; %6KHz
alfa_p = 3; %最大通帶衰減3dB
fs = 14e3; %14KHz 阻帶截止頻率
alfa_s = 32;% 32dB
k_sp = sqrt(10^(alfa_p/10) - 1)/sqrt(10^(alfa_s/10) - 1)
lamda_sp = 2*pi*fs/(2*pi*fp)
N = ceil( -log(k_sp)/log(lamda_sp) )
p = zeros(1,N);
for I=1:N
k = I-1;
p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
end
z = []; %表示無零點
[b1 a1] = zp2tf( z, p, 1 ); %得到傳遞函數(shù) tf:trans-function
fc_freq = fp* ( 10^(alfa_p/10)-1 )^(-1/2/N) ; %3dB截至頻率
figure(2);
freq_axis1 = [ 0: 50 :15e3 ] ;
[H1 ] = freqs(b1, a1, freq_axis1/fc_freq); %對Wc作頻率歸一化
plot( freq_axis1 , 20*log10(abs(H1)) );
H1 = freqs(b1,a1,freq_axis);
figure(3);
plot( freq_axis,abs(H1) );
grid on
% 給出的模擬濾波器,使用脈沖響應(yīng)不變法來設(shè)計數(shù)字IIR濾波器
% 驗證不同采樣頻率fs對于數(shù)字IIR濾波器的影響
clc,clear all,close all;
J = sqrt(-1);
b = [0 0 0.5250]; %高次項系數(shù)在前
a = [1 0.5550 0.7552];
freq_analog = [0:0.5:30]; %模擬角頻率!!!
H_analog = freqs(b, a, freq_analog); %計算在模擬角頻率處的頻響
figure(1);
subplot( 2,1,1 );
plot( freq_analog,20*log10(abs(H_analog)) );
xlabel( '角頻率( rad/s )' ); ylabel( '幅頻響應(yīng)(dB)' );
title('模擬濾波器頻率響應(yīng)');
Fs1 = 1.1; %1.1Hz采樣率
[bz1, az1] = impinvar( b, a, Fs1 ); %根據(jù)模擬濾波器系數(shù)b,a,按照采樣率fs轉(zhuǎn)換為系數(shù)為bz,az的數(shù)字IIR濾波器
Fs2 = 10.1; %10.1Hz采樣頻率
[bz2, az2] = impinvar( b, a, Fs2 ); %根據(jù)模擬濾波器系數(shù)b,a,按照采樣率fs轉(zhuǎn)換為系數(shù)為bz,az的數(shù)字IIR濾波器
freq_digital = [0:0.1:2*pi];
H_dig1 = freqz( bz1, az1, freq_digital );
H_dig2 = freqz( bz2, az2, freq_digital );
subplot(2,1,2);
plot( freq_digital, 20*log10(abs(H_dig1)) );
xlabel( '數(shù)字頻率' ); ylabel( '幅頻響應(yīng)(dB)' );
title( '不同采樣頻率對于數(shù)字IIR頻響的影響' );
hold on;
plot( freq_digital, 20*log10(abs(H_dig2)),'r' );
legend( ['Fs1=' num2str(Fs1) 'Hz'], ['Fs2=' num2str(Fs2) 'Hz'] );
clc,clear all,close all;
%1 給定數(shù)字濾波器指標(biāo),用脈沖響應(yīng)不變法設(shè)計數(shù)字濾波器
J = sqrt(-1);
freq_p = 0.2*pi; %通帶截止頻率0.2pi
alpha_p = 1; %通帶最大衰減1dB
freq_s = 0.3*pi;
alpha_s = 15;
Fs_array = [ 1 10 ];
Color_array =[ 'b','k' ];
for III=1:2
color_used = Color_array(III);
Fs = Fs_array(III);
T = 1/Fs;
analog_freq_p = freq_p/T %數(shù)字頻率w到模擬角頻率W的轉(zhuǎn)換 W = w/T;
analog_freq_s = freq_s/T
%根據(jù)模擬濾波器的指標(biāo)求巴特沃茲濾波器的階次
k_sp = sqrt(10^(alpha_p/10) - 1)/sqrt(10^(alpha_s/10) - 1);
lamda_sp = 2*pi*analog_freq_s/(2*pi*analog_freq_p);
N = ceil( -log(k_sp)/log(lamda_sp) )
Wc = analog_freq_p* ( 10^(analog_freq_p/10)-1 )^(-1/2/N) %3dB截至頻率
%查表,得到歸一化的傳輸函數(shù) 或者根據(jù)公式得到極點p
p = zeros(1,N);
for I=1:N
k = I-1;
p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
end
% 根據(jù)得到的零點、極點得到歸一化的傳輸函數(shù)H(p)
z = []; %表示無零點
[b a] = zp2tf( z, p, 1 ); %得到傳遞函數(shù) tf:trans-function,第三個參數(shù)為增益=1
% 根據(jù)p=s/Wc 把歸一化傳輸函數(shù)H(p)的系數(shù)轉(zhuǎn)換為實際的模擬傳輸函數(shù)H(s)
bs = zeros(1,length(b)) % H(s)的分子系數(shù)
as = zeros(1,length(a)) % 對與N階模擬濾波器,設(shè)其傳輸函數(shù)分子分母系數(shù)分別為bs,as
temp =[N:-1:0]
temp = Wc .^ temp
bs = b ./ temp
as = a ./ temp
temp = as(1)
as = as/temp %驗證與書上結(jié)果是否一致
bs = bs/temp
figure(1);
freq_analog = linspace( 0, 2*analog_freq_s );
H_analog = freqs(bs,as,freq_analog);
plot( freq_analog, 20*log10(abs(H_analog)) ,color_used); grid on; hold on;
xlabel( '模擬角頻率(rad/s)' ); ylabel('幅頻響應(yīng)(dB)');
title( '模擬濾波器的頻率響應(yīng)' );
% 根據(jù)H(s)獲得H(z),使用脈沖響應(yīng)不變法
[bz, az] = impinvar( bs, as, Fs ); %根據(jù)模擬濾波器系數(shù)b,a,按照采樣率fs轉(zhuǎn)換為系數(shù)為bz,az的數(shù)字IIR濾波器
freq_digital = [0:0.1:2*pi-0.1];
H = freqz( bz, az, freq_digital );
figure(2);
plot( freq_digital/pi, 20*log10(abs(H)) ,color_used ); grid on; hold on;
xlabel( '數(shù)字頻率/pi'); ylabel( '幅頻響應(yīng)(dB)');
title( '數(shù)字IIR濾波器頻率響應(yīng)' );
a = 1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 當(dāng)采樣頻率變?yōu)?span id="n5n3t3z" class="token number">2Hz時,求得出的數(shù)字IIR頻率響應(yīng)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1), legend( ['Fs=' num2str(Fs_array(1)) 'Hz'],['Fs=' num2str(Fs_array(2)) 'Hz'] );
figure(2), legend( ['Fs=' num2str(Fs_array(1)) 'Hz'],['Fs=' num2str(Fs_array(2)) 'Hz'] );
clc,clear all,close all;
% 給定數(shù)字濾波器指標(biāo)
J = sqrt(-1);
freq_p = 0.3*pi; %通帶截止頻率0.3pi
alpha_p = 1.1; %通帶最大衰減1.1dB
freq_s = 0.5*pi;
alpha_s = 16;
% 模擬低通指標(biāo)
Fs = 1;
T = 1/Fs;
analog_freq_p = 2/T * tan(freq_p/2)
analog_freq_s = 2/T * tan(freq_s/2)
% 計算巴特沃茲濾波器的指標(biāo)
k_sp = sqrt(10^(alpha_p/10) - 1)/sqrt(10^(alpha_s/10) - 1);
lamda_sp = 2*pi*analog_freq_s/(2*pi*analog_freq_p);
N = ceil( -log(k_sp)/log(lamda_sp) );
Wc = analog_freq_p* ( 10^(analog_freq_p/10)-1 )^(-1/2/N) ; %3dB截至頻率
%查表,得到歸一化的傳輸函數(shù) 或者根據(jù)公式得到極點p
p = zeros(1,N);
for I=1:N
k = I-1;
p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
end
% 根據(jù)得到的零點、極點得到歸一化的傳輸函數(shù)H(p)
z = []; %表示無零點
[b a] = zp2tf( z, p, 1 ); %得到傳遞函數(shù) tf:trans-function,第三個參數(shù)為增益=1
% 根據(jù)p=s/Wc 把歸一化傳輸函數(shù)H(p)的系數(shù)轉(zhuǎn)換為實際的模擬傳輸函數(shù)H(s)
bs = zeros(1,length(b)); % H(s)的分子系數(shù)
as = zeros(1,length(a)); % 對與N階模擬濾波器,設(shè)其傳輸函數(shù)分子分母系數(shù)分別為bs,as
temp =[N:-1:0];
temp = Wc .^ temp;
bs = b ./ temp;
as = a ./ temp;
temp = as(1);
as = as/temp; %驗證與書上結(jié)果是否一致
bs = bs/temp;
figure(1);
freq_analog = linspace( 0, 2*analog_freq_s );
H_analog = freqs(bs,as,freq_analog);
plot( freq_analog, 20*log10(abs(H_analog)) ,'k'); grid on;
xlabel( '模擬角頻率(rad/s)' ); ylabel('幅頻響應(yīng)(dB)');
title( '模擬濾波器的頻率響應(yīng)' );
% 根據(jù)模擬濾波器的傳輸函數(shù)得到數(shù)字濾波器的傳輸函數(shù)
[bz az] = bilinear( bs, as, Fs ); % 當(dāng)模擬濾波器bs,as為其系數(shù),用Fs采樣。轉(zhuǎn)換成數(shù)字IIR的傳輸函數(shù)bz,az
freq_digital = [0:0.1:2*pi-0.1];
H = freqz( bz, az, freq_digital );
figure(2);
plot( freq_digital/pi, 20*log10(abs(H)) ,'k' ); grid on;
xlabel( '數(shù)字頻率/pi'); ylabel( '幅頻響應(yīng)(dB)');
title( '數(shù)字IIR濾波器頻率響應(yīng)' );
% 可以比較一下用脈沖響應(yīng)不變法獲得頻率響應(yīng)
到了這里,關(guān)于【數(shù)字信號處理2】IIR 濾波器設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!