IIR filter source program designed using matlab - IIR first-order low-pass/high-pass

Publisher:科技飞翔Latest update time:2012-02-11 Keywords:IIR  matlab Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

IIR filter source program designed with matlab

(1) IIR first-order low-pass filter P576

clear;

fi=1;fs=10;Gc2=0.9;

wc=2*pi*fi/fs;

omegac=tan(wc/2);

alpha=(sqrt(Gc2)/sqrt(1-Gc2))*omegac;

a=(1-alpha)/(1+alpha);

b=(1-a)/2;

w=0:pi/300:pi;

Hw2=alpha^2./(alpha^2+(tan(w/2)).^2);

plot(w/pi,Hw2);

grid;

hold on;

(2) First-order high-pass filter P581

clear;

fi=1;fs=10;Gc2=0.5;

wc=2*pi*fi/fs;

omegac=tan(wc/2);

alpha=(sqrt(1-Gc2)/(sqrt(Gc2)))*omegac;

a=(1-alpha)/(1+alpha);

b=(1+a)/2;

w=0:pi/300:pi;

Hw2=(tan(w/2).^2)./(alpha^2+(tan(w/2)).^2);

plot(w/pi,Hw2);

grid;

hold on;

(3) Notch filter

clear;

Gb2=0.5;

w0=0.35*pi;

deltaw=0.1*pi;

b=1/(1+tan(deltaw/2)*(sqrt(1-Gb2)/sqrt(Gb2)));

B=[1 -2*cos(w0) 1].*b;

A=[1 -2*b*cos(w0) (2*b-1)];

w=0:pi/500:pi;

H=freqz(B,A,w);

plot(w/pi,abs(H));

grid;

(4) Peak filter

clear;

And=3;

Gb2=10^(-Ac/10);

w0=0.35*pi;

deltaw=0.1*pi;

b=1/(1+tan(deltaw/2)*(sqrt(Gb2)/sqrt(1-Gb2)));

B=[1 0 -1].*(1-b);

A=[1 -2*b*cos(w0) (2*b-1)];

w=0:pi/500:pi;

H=freqz(B,A,w);

plot(w/pi,abs(H));

grid;

(5) IIR low-pass filtering (Butterworth)

% IIR Lowpass Use Butterworth

% copyright by Etual

clear;

fs=20;fpass=4;fstop=5;

Ap=0.5;As=10;

wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;

omegap=tan(wp/2);omegas=tan(ws/2);

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

for i=1:K

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

end

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:pi/300:pi;

Hw2=1./(1+(tan(w/2)/omega0).^(2*N));

plot(w/pi,Hw2);

grid;

(6) IIR high-pass filter (Butterworth)

% IIR Hightpass Use Butterworth

% copyright by Etual

clear;

fs=20;fpass=5;fstop=4;

Ap=0.5;As=10;

wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;

omegap=cot(wp/2);omegas=cot(ws/2);

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

for i=1:K

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

end

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+(cot(w/2)/omega0).^(2*N));

plot(w/pi,Hw2);

grid;

(7) IIR bandpass filtering (Butterworth)

% IIR Bandpass Use Butterworth

% copyright by Etual

clear;

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

Ap=0.0877;As=16.9897;

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((c-cos(wpb))/sin(wpb));

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

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

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

a3(i)=-(4*c*(omega0*cos(theta(i))+1))/(1-2*omega0*cos(theta(i))+omega0^2);

end

for i=1:K

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

end

if K<(N/2)

G0=omega0/(1+omega0);a0(1)=-2*c/(1+omega0);a0(2)=(1-omega0)/(1+omega0);

end

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

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

plot(w/pi,Hw2);

grid;

(8) IIR band-stop filtering (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;

(9) IIR low-pass filtering (Chebyshev 1)

% IIR Lowpass Use Chebyshev Type 1

% copyright by Etual

clear;

fs=20;fpass=4;fstop=5;

Ap=0.5;As=10;

wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;

omegap=tan(wp/2);omegas=tan(ws/2);

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

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

e=es/ep;w=omegas/omegap;

N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));

a=log(1/ep+sqrt(1/ep^2+1))/N;

omega0=omegap*sinh(a);

K=floor(N/2);

theta=zeros(1,K);omega=zeros(1,K);

for i=1:K

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

end

for i=1:K

omega(i)=omegap*sin(theta(i));

end

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

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

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

end

if K<(N/2)

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

else

H0=sqrt(1/(1+ep^2));

end

f=0:1/300:10;

Hf2=1./(1+ep^2*(cheby(N,tan(pi*f/fs)/omegap)).^2);

plot(f,abs(Hf2));

grid;

(9) IIR low-pass filtering (Chebyshev 1)

% IIR Lowpass Use Chebyshev Type 2

% copyright by Etual

clear;

fs=20;fpass=4;fstop=5;

Ap=0.5;As=10;

wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;

omegap=tan(wp/2);omegas=tan(ws/2);

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

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

e=es/ep;w=omegas/omegap;

N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));

a=log(es+sqrt(es^2+1))/N;

omega0=omega/birth(a);

K=floor(N/2);

for i=1:K

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

end

for i=1:K

omega(i)=omegas/sin(theta(i));

end

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

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

end

for i=1:K

b1(i)=2*(1-omega(i))/(1+omega(i));

end

if K<(N/2)

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

else

H0=sqrt(1/(1+ep^2));

end

f=(0+eps):1/100:10;

Hf2=(cheby(N,omegas./tan(pi*f/fs))).^2./((cheby(N,omegas./tan(pi*f/fs))).^2+es^2);

plot(f,abs(Hf2));

grid;

(10) Function cheby.m used in chebyshev

function CN=cheby(N,x)

if x<=1

CN=cos(N*cos(x));

else

CN=cosh(N*log(x+sqrt(x.^2-1)));

end

Keywords:IIR  matlab Reference address:IIR filter source program designed using matlab - IIR first-order low-pass/high-pass

Previous article:Method of Designing FIR Filter Using MATLAB
Next article:Stepper Motor Positioning Control System VHDL Program and Simulation

Recommended ReadingLatest update time:2024-11-16 23:51

Real-time & non-real-time comprehensive application in the measurement of multiple signals
1: Introduction In factories or laboratories, experimenters need to monitor certain dynamic quantities and state quantities in real time, or use them to quickly and accurately monitor certain key equipment, or use them to record processes as a reference for future system adjustments (such as algorithm modifi
[Test Measurement]
Simulation Analysis of Electromagnetic Interference of Drain-Source Voltage of Switching Power Supply MOSFET
1 Introduction Switching power supply is a kind of power supply equipment with a wide range of uses. However, with the continuous increase of switching frequency and switching speed, the electromagnetic interference generated is getting bigger and bigger. Due to the implementation of market access system, elec
[Power Management]
Simulation Analysis of Electromagnetic Interference of Drain-Source Voltage of Switching Power Supply MOSFET
Practical knowledge! From oscilloscope to MATLAB: How to implement mathematical analysis of electronic signals
Matlab is a widely used mathematical software, which is often used in algorithm development, data visualization, data analysis and high-level technical computing language and interactive environment for numerical calculation. Matlab is a very concise language, which makes it incomparable in numerical calculation, ma
[Test Measurement]
Practical knowledge! From oscilloscope to MATLAB: How to implement mathematical analysis of electronic signals
Design of Signal Generator Based on MATLAB
1. Introduction At present, MATLAB has been widely used in various fields of engineering design, such as electronics, communications, etc. It has become the most popular computer simulation software design tool in the world. MATLAB is no longer just a matrix laboratory, but a powerful and practical high-level comput
[Test Measurement]
Design of Signal Generator Based on MATLAB
Wavelet denoising method based on hybrid programming of LabVIEW and Matlab
0 Preface Signal denoising is one of the classic problems in the field of signal processing. Traditional denoising methods mainly include linear filtering methods and nonlinear filtering methods. When working, the filter screens the signal and only allows signals in a specific frequency band to pass. When the usefu
[Test Measurement]
Wavelet denoising method based on hybrid programming of LabVIEW and Matlab
Latest Embedded Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号