?? bs.m
字號:
function bs
clear all;
Wpl=0.2*pi;
Wph=0.8*pi;
Wsl=0.4*pi;
Wsh=0.6*pi;
tr_width=min((Wsl-Wpl),(Wph-Wsh)); %過渡帶寬度
N=ceil(6.2*pi/tr_width) %濾波器長度
n=0:1:N-1;
Wcl=(Wsl+Wpl)/2; %理想低通濾波器的截止頻率
Wch=(Wsh+Wph)/2;
hd=ideal_bs(Wcl,Wch,N); %理想低通濾波器的單位沖激響應
wd1=(hanning(N))';b1=hd.*wd1;
wd2=(hamming(N))';b2=hd.*wd2;
wd3=(blackman(N))';b3=hd.*wd3;
wd4=(kaiser(N))';b4=hd.*wd4; %漢寧窗
%截取得到實際的單位脈沖響應
[db1,mag1,pha1,w1]=freqz_m(b1,[1]); %計算實際濾波器的幅度響應
[db2,mag2,pha2,w2]=freqz_m(b2,[1]);
[db3,mag3,pha3,w3]=freqz_m(b3,[1]);
[db4,mag4,pha4,w4]=freqz_m(b4,[1]);
delta_w=2*pi/1000;
Ap1=-(min(db1(1:1:Wpl/delta_w+1))) %實際通帶紋波
As1=-round(max(db1(Wsl/delta_w+1:1:Wsh/delta_w+1))) %實際阻帶紋波
Ap2=-(min(db2(1:1:Wpl/delta_w+1))) %實際通帶紋波
As=-round(max(db2(Wsl/delta_w+1:1:Wsh/delta_w+1))) %實際阻帶紋波
Ap3=-(min(db3(1:1:Wpl/delta_w+1))) %實際通帶紋波
As3=-round(max(db3(Wsl/delta_w+1:1:Wsh/delta_w+1))) %實際阻帶紋波
Ap4=-(min(db4(1:1:Wpl/delta_w+1))) %實際通帶紋波
As4=-round(max(db4(Wsl/delta_w+1:1:Wsh/delta_w+1))) %實際阻帶紋波
figure(1)
stem(n,hd);
title('理想脈沖響應')
axis([0 N-1 -0.4 1]);xlabel('n');ylabel('hd(n)');
figure(2)
subplot(2,2,1)
plot(w1,mag1,':b')
legend('漢寧窗帶阻濾波器')
subplot(2,2,2)
plot(w2,mag2,'-.g')
legend('海明窗帶阻濾波器')
subplot(2,2,3)
plot(w3,mag3,'--r')
legend('布來克曼窗帶阻濾波器')
subplot(2,2,4)
plot(w4,mag4,'-c')
legend('凱澤窗帶阻濾波器')
figure(3)
plot(w1,mag1,':b',w2,mag2,'-.g',w3,mag3,'--r',w4,mag4,'-c')
legend('漢寧窗帶阻濾波器','海明窗帶阻濾波器','布來克曼窗帶阻濾波器','凱澤窗帶阻濾波器')
figure(4)
plot(w1/pi,20*log10(mag1),':b',w2/pi,20*log10(mag2),'-.k',w3/pi,20*log10(mag3),'--r',w4/pi,20*log10(mag4),'-c')
legend('漢寧窗幅度響應(dB)','海明窗幅度響應(dB)','布來克曼窗幅度響應(dB)','凱澤窗幅度響應(dB)')
figure(5)
plot(n,b1,':b',n,b2,'-.g',n,b3,'--r',n,b4,'-c')
legend('漢寧窗h(n)','海明窗h(n)','布來克曼窗h(n)','凱澤窗h(n)')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -