Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

MengFanjun的博客

符号含义

在这里插入图片描述 # 例题 在这里插入图片描述

脉冲响应不变法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear
close all
clc

fs=1000;%采样频率
fc=200;%通带截止频率
fr=300;%阻带截止频率
T=0.001; %采样周期


%%%%%%%脉冲响应不变法
wp1=2*pi*fc;%通带截止频率
wr1=2*pi*fr;%阻带截止频率

[N1,wn1]=buttord(wp1,wr1,1,25,'s'); %[滤波器的阶数,截止频率]=buttord(通带截止频率,阻带截止频率,通带波纹,阻带衰减,滤波器类型s-带阻)
[B1,A1]=butter(N1,wn1,'s'); %[传递函数系数B1是分子的 A1是分母的]=butter(滤波器的阶数,截止频率,滤波器类型s-带阻)
[num1,den1]=impinvar(B1,A1,fs); %利用脉冲响应不变法将模拟滤波器转数字滤波器[数字滤波器传递函数num1/den1]=impinvar(模拟的分子系数B1,模拟的分母系数A1,采样频率)
[h1,w]=freqz(num1,den1); %[频率响应,角频率]=freqz(数字滤波器传递函数num1/den1)

双线性变换法

双线性变换法要对通带截止频率和阻带截止频率做一个预畸变处理

1
2
3
4
5
6
7
8
%%%%%%%双线性变换法
wp2=2*fs*tan(2*pi*fc/(2*fs)); %做预畸变处理后的通带截止频率
wr2=2*fs*tan(2*pi*fr/(2*fs)); %做预畸变处理后的阻带截止频率
[N2,wn2]=buttord(wp2,wr2,1,25,'s'); %[滤波器的阶数,截止频率]=buttord(通带截止频率,阻带截止频率,通带波纹,阻带衰减,滤波器类型s-带阻)
[B2,A2]=butter(N2,wn2,'s'); %[传递函数系数B2是分子的 A2是分母的]=butter(滤波器的阶数,截止频率,滤波器类型s-带阻)
[num2,den2]=bilinear(B2,A2,fs); %利用双线性的方法将模拟滤波器转数字滤波器[数字滤波器传递函数num2/den2]=impinvar(模拟的分子系数B2,模拟的分母系数A2,采样频率)
[h2,w]=freqz(num2,den2); %[频率响应,角频率]=freqz(数字滤波器传递函数num2/den2)
f=w/(2*pi)*fs; %将角频率转换为频率

画图

1
2
3
4
5
plot(f,20*log10(abs(h1)),'-.',f,20*log10(abs(h2)),'-'); %画脉冲响应不变法和双线性变换法的图
axis([0,500,-80,10]);% 设置当前坐标轴x轴和y轴的限制范围
grid; %切换改变主网格线的可见性
xlabel('频率/Hz');ylabel('幅度/dB');title('巴特沃思数字低通滤波器');
legend('脉冲响应不变法','双线性变换法');
在这里插入图片描述

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
clear
close all
clc

fs=1000;%采样频率
fc=200;%通带截止频率
fr=300;%阻带截止频率
T=0.001; %采样周期


%%%%%%%脉冲响应不变法
wp1=2*pi*fc;%通带截止频率
wr1=2*pi*fr;%阻带截止频率

[N1,wn1]=buttord(wp1,wr1,1,25,'s'); %[滤波器的阶数,截止频率]=buttord(通带截止频率,阻带截止频率,通带波纹,阻带衰减,滤波器类型s-带阻)
[B1,A1]=butter(N1,wn1,'s'); %[传递函数系数B1是分子的 A1是分母的]=butter(滤波器的阶数,截止频率,滤波器类型s-带阻)
[num1,den1]=impinvar(B1,A1,fs); %利用脉冲响应不变法将模拟滤波器转数字滤波器[数字滤波器传递函数num1/den1]=impinvar(模拟的分子系数B1,模拟的分母系数A1,采样频率)
[h1,w]=freqz(num1,den1); %[频率响应,角频率]=freqz(数字滤波器传递函数num1/den1)

%%%%%%%双线性变换法
wp2=2*fs*tan(2*pi*fc/(2*fs)); %做预畸变处理后的通带截止频率
wr2=2*fs*tan(2*pi*fr/(2*fs)); %做预畸变处理后的阻带截止频率
[N2,wn2]=buttord(wp2,wr2,1,25,'s'); %[滤波器的阶数,截止频率]=buttord(通带截止频率,阻带截止频率,通带波纹,阻带衰减,滤波器类型s-带阻)
[B2,A2]=butter(N2,wn2,'s'); %[传递函数系数B2是分子的 A2是分母的]=butter(滤波器的阶数,截止频率,滤波器类型s-带阻)
[num2,den2]=bilinear(B2,A2,fs); %利用双线性的方法将模拟滤波器转数字滤波器[数字滤波器传递函数num2/den2]=impinvar(模拟的分子系数B2,模拟的分母系数A2,采样频率)
[h2,w]=freqz(num2,den2); %[频率响应,角频率]=freqz(数字滤波器传递函数num2/den2)
f=w/(2*pi)*fs; %将角频率转换为频率

plot(f,20*log10(abs(h1)),'-.',f,20*log10(abs(h2)),'-'); %画脉冲响应不变法和双线性变换法的图
axis([0,500,-80,10]);% 设置当前坐标轴x轴和y轴的限制范围
grid; %切换改变主网格线的可见性
xlabel('频率/Hz');ylabel('幅度/dB');title('巴特沃思数字低通滤波器');
legend('脉冲响应不变法','双线性变换法');

评论