⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 butterworth.m

📁 滤波器的MATLAB实现程序 内附多个源代码
💻 M
字号:
clear all
clc
close all
Rp=1;
Rs=30;
typeo=1;
% switch typeo
% case 1
%     type='bandpass';
% case 2
%     type='stop';
% case 3
%     type='high';
% case 4
%     type='low';
% end
  

if typeo==1
 Fs=1000;
Wp1=2*100*pi;
Ws1=2*50*pi;
Wp2=2*200*pi;
Ws2=2*250*pi;
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
elseif typeo==2
 Fs=1500;   
 Ws1=400*pi;
Wp1=300*pi;
Ws2=500*pi;
Wp2=600*pi;
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
   
elseif typeo==3
    Fs=1000;   
Wp1=200*2*pi;
Ws1=100*2*pi;
Wp2=0;
Wp=Wp1;
Ws2=0;
Ws=Ws1;
elseif typeo==4
 Fs=5000;
Wp1=1000*2*pi;
Ws1=2000*2*pi;
Wp2=0;
Wp=Wp1;
Ws2=0;
Ws=Ws1;
end
[N,wn]=buttord(Wp,Ws,Rp,Rs,'s');
[b,a,k]=buttap(N); 
[A,B,C,D]=zp2ss(b,a,k);
Wn=Wp2-Wp1;
Wo=sqrt(Wp2*Wp1);
switch typeo
case 1
   [A,B,C,D]=lp2bp(A,B,C,D,Wo,Wn);% type='带通';
case 2
    [A,B,C,D]=lp2bs(A,B,C,D,Wo,Wn);%type='带阻';
case 3
    [A,B,C,D]=lp2hp(A,B,C,D,wn);%type='高通';
case 4
    [A,B,C,D]=lp2lp(A,B,C,D,wn);%type='底通';
end
[b,a]=ss2tf(A,B,C,D);
if typeo==2|typeo==3
[b,a]=bilinear(b,a,Fs);
else [b,a]=impinvar(b,a,Fs);
end
[H,w]=freqz(b,a);
hold on
plot(w*Fs/pi,abs(H),'r');
grid on
xlabel('frequency/Hz')
ylabel('magnitude')
title('Butterworth数字滤波器')


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -