matlab 6.5 设计数字滤波器
?
1、用脈沖響應不變法設計一個Butterworth低通數字濾波器,通帶截止頻率為0.4π? ?,通帶波紋Rp小于3dB,阻帶邊界頻率為0.6π,阻帶衰減大于15dB,采樣頻率Fs=10000Hz。假設一個信號?
其中f1=1000Hz,f2=4000Hz。試將原信號與通過該濾波器的輸出信號進行比較。?(用經典法設計)
?
wp=0.4*pi;ws=0.6*pi;Rp=3;Rs=15;
T=0.0001;Nn=128;?? %采樣間隔
Wp=wp/T;Ws=ws/T;?? %得到模擬濾波器的頻率—采用脈沖響應不變法的頻率轉換形式
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s');?? %計算模擬濾波器的最小階數
[z,p,k]=buttap(N);?? %設計低通原型數字濾波器
[Bap,Aap]=zp2tf(z,p,k);?? %零點極點增益形式轉換為傳遞函數形式
[b,a]=lp2lp(Bap,Aap,Wn);? %低通濾波器頻率轉換
%[b,a]=butter(N,Wn,’s’);
[bz,az]=impinvar(b,a,1/T);? %脈沖響應不變法設計數字濾波器傳遞函數
figure(1)
[H,f]=freqz(bz,az,Nn,1/T);? %輸出幅頻響應和相頻響應
subplot(2,1,1),plot(f,20*log10(abs(H)));
xlabel('頻率/Hz');ylabel('振幅/dB');grid on;
subplot(2,1,2),plot(f,180/pi*unwrap(angle(H)))
xlabel('頻率/Hz');ylabel('相位/^o');grid on;
figure(2)
f1=5;f2=30;?? %輸入信號含有的頻率
N=100;?? %數據點數
n=0:N-1;t=n*T;?? %時間序列
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t);? %輸入信號
subplot(2,1,1),plot(t,x),title('輸入信號')
y=filtfilt(bz,az,x);?? %對信號進行濾波
y1=filter(bz,az,x);
subplot(2,1,2),plot(t,y,t,y1,':'),
title('輸出信號'),xlabel('時間/s')
legend( ' filtfilt ', 'filter')
?
2、設計一個Butterworth高通數字濾波器,通帶邊界頻率為300Hz,阻帶邊界頻率為200Hz,通帶波紋小于1dB,阻帶衰減大于20dB,采樣頻率為1000Hz。試繪出其頻率特性圖并編制一測試該濾波器滿足性能的例子。(用完全設計法)
?
Fs=1000;%采樣頻率
Wp=300*2/Fs;
Ws=200*2/Fs;
Rp=1;
Rs=20;Nn=128;
[N,wn]=buttord(Wp,Ws,Rp,Rs);
[b,a]=butter(N,wn,'high') %N為濾波器的階數
figure(1)
[H,f]=freqz(b,a,Nn,Fs);?? %求得濾波器的頻率特性
subplot(2,1,1),plot(f,20*log10(abs(H)));
xlabel('頻率/Hz');
ylabel('振幅/dB');
grid on;
subplot(2,1,2),plot(f,180/pi*unwrap(angle(H)))
xlabel('頻率/Hz');
ylabel('相位/^o');
?
?
?
總結
以上是生活随笔為你收集整理的matlab 6.5 设计数字滤波器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行卡收到一笔不明收入怎么办
- 下一篇: 汇编语言程序设计,计算比赛成绩