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

📄 butterworth.m

📁 用matlab语言实现Butterworth滤波器的算法
💻 M
字号:
%本程序实现Butterworth带阻滤波

% IIR Bandstop Use Butterworth

% copyright by Etual

clear;

fs=20;fpa=1.5;fpb=4.5;fsa=2;fsb=4;

Ap=0.5;As=10;

wpa=2*pi*fpa/fs;wpb=2*pi*fpb/fs;wsa=2*pi*fsa/fs;wsb=2*pi*fsb/fs;

c=sin(wpa+wpb)/(sin(wpa)+sin(wpb));

omegap=abs(sin(wpb)/(c-cos(wpb)));

omegasa=sin(wsa)/(cos(wsa)-c);omegasb=sin(wsb)/(cos(wsb)-c);

omegas=min(abs(omegasa),abs(omegasb));

ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);

N=ceil(log(es/ep)/log(omegas/omegap));

omega0=omegap/ep^(1/N);

K=floor(N/2);

theta=zeros(1,K);

for i=1:K  

    theta(i)=pi*(N-1+2*i)/(2*N);

end

G=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);

for i=1:K

    G(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);

end

for i=1:K

    a1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);

end

for i=1:K

    a2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2);

end

if K<(N/2)

    G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);

end

w=(0+eps):pi/300:pi;

Hw2=1./(1+(sin(w)./(omega0*(c-cos(w)))).^(2*N));

plot(w/pi,Hw2);

grid;

⌨️ 快捷键说明

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