首页 > 其他分享 >matlab 6.5 设计数字滤波器

matlab 6.5 设计数字滤波器

时间:2022-12-13 20:35:08浏览次数:45  
标签:subplot 滤波器 Rp plot 6.5 matlab 频率 pi



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

 

matlab 6.5 设计数字滤波器_matlab

matlab 6.5 设计数字滤波器_matlab_02


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 设计数字滤波器_测试_03


 


标签:subplot,滤波器,Rp,plot,6.5,matlab,频率,pi
From: https://blog.51cto.com/u_15911341/5935038

相关文章