fp = 400 ; fs = 300;
Rp = 1; %通带最大衰减Rp=1dB
Rs = 20; %阻带最小衰减Rs=20dB
wp =fp*2*pi;
ws =fs*2*pi;
Fs=1000;Ts=1/Fs;
Wp=wp/(Fs);
Ws=ws/(Fs);
wp2=2*tan(Wp/2)/Ts;
ws2=2*tan(Ws/2)/Ts; %数字域频率进行预畸变,根据采样频率对滤波器边界进行转换
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s') %求滤波器的最小阶数和截止频率
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型
[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式
figure(1)
freqs(Bap,Aap); %模拟低通滤波器的频率响应
title('模拟滤波器(低通原型)的频率响应')
[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通
figure(2)
freqs(Bbs,Abs);
title('模拟滤波器的频率响应')
[Bbz,Abz]=bilinear(Bbs,Abs,Fs); %双线性变换
figure(3)
freqz(Bbz,Abz,512,Fs);
title('数字滤波器的频率响应')
[hw,w]=freqz(Bbz,Abz,512);
n=0:127;
dt= 1/Fs;t = n*dt;
f1 = 10;f2 = 400;
x = sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t); %输入信号
x1 =sin(2*pi*f1*t);x2 = 0.5*cos(2*pi*f2*t);
figure(4)
subplot(4,1,1),plot(t,x);title('输入信号(总)')
subplot(4,1,2),plot(t,x1);title('低频输入信号')
subplot(4,1,3),plot(t,x2);title('高频输入信号')
y=filter(Bbz,Abz,x); %对输出信号进行滤波
subplot(4,1,4),plot(t,y);title('输出信号')
xlabel('时间/s')
%带通滤波器
fp = [100 200] ; fs = [50 250];
Rp = 1; %通带最大衰减Rp=1dB
Rs = 20; %阻带最小衰减Rs=20dB
Nn = 128;
wp =fp*2*pi;
ws =fs*2*pi;
Fs=1000;Ts=1/Fs;
Wp=wp/(Fs);
Ws=ws/(Fs);
wp2=2*tan(Wp/2)/Ts
ws2=2*tan(Ws/2)/Ts %数字域频率进行预畸变,根据采样频率对滤波器边界进行转换
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s'); %求滤波器的最小阶数和截止频率
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型
[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式
Wo = sqrt(Wn(1)*Wn(2)); %计算中心点频率
Bw = Wn(2)-Wn(1);
[bt,at]=lp2bp(Bap,Aap,Wo,Bw);
figure(1)
freqs(bt,at); %模拟低通滤波器的频率响应
title('模拟滤波器(带通原型)的频率响应')
[Bbz,Abz]=bilinear(bt,at,Fs); %双线性变换
figure(3)
freqz(Bbz,Abz,512,Fs);
title('数字滤波器的频率响应')
[hw,w]=freqz(Bbz,Abz,512);
n=0:127;
dt= 1/Fs;t = n*dt;
f1 = 10;f2 = 200;f3=400;
x = sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+cos(2*pi*f3*t); %输入信号
x1 =sin(2*pi*f1*t);x2 = 0.5*cos(2*pi*f2*t);x3=cos(2*pi*f3*t);
figure(4)
subplot(5,1,1),plot(t,x);title('输入信号(总)')
subplot(5,1,2),plot(t,x1);title('10Hz输入信号')
subplot(5,1,3),plot(t,x2);title('200Hz输入信号')
subplot(5,1,4),plot(t,x3);title('400Hz输入信号')
y=filter(Bbz,Abz,x); %对输出信号进行滤波
subplot(5,1,5),plot(t,y);title('输出信号')
xlabel('时间/s')