现在的位置: 首页 > 综合 > 正文

matlab 6.5 设计数字滤波器

2013年02月03日 ⁄ 综合 ⁄ 共 1425字 ⁄ 字号 评论关闭

 

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');

 

 

 

抱歉!评论已关闭.