IIR数字滤波器设计matlab代码

合集下载

matlab手动实现IIR滤波器

matlab手动实现IIR滤波器

matlab⼿动实现IIR滤波器使⽤⼯具为matlab7.0⼀,利⽤matlab fadtool⼯具获取SOS matrix 和 factor scales1.在命令框中输⼊fdatool2.配置滤波器信息,配置结果如下图3.将SOS matrix 和 factor scales保存到workspace,保存的变量名为SOS和scale,并且⽣成my_filter.m⽂件,my_filter.m的⽂件内容如下function Hd = my_filterN = 3; % OrderFc = 150; % Cutoff Frequencyh = fdesign.lowpass('N,Fc', N, Fc, Fs);Hd = butter(h);⼆.将SOS matrix 和 factor scales转化为A,B系数1.在matlab命令对话框输⼊命令g = prod(scale)[b,a] = sos2tf(SOS,g)三.⼿动编写代码实现IIR滤波器IIR差分⽅程如下:function F = filter()% 采样频率fs = 1000;x = 0:1/fs:20;% 构造的信号sing = 0.5sin(2pi100x)+0.8cos(2pi180x);% 将数据进⾏fft变换function my_plot(data)N = length(data);xdft = fft(data);xdft = xdft(1:N/2+1);% psdx = abs(xdft).^2;freq = 0:fs/N:fs/2;plot(freq, (2/N)abs(xdft))endsubplot(311)my_plot(sing)% A,B系数b = [0.04953,0.14860,0.14860,0.04953];a = [1,-1.16192,0.69594,-0.13776];len = length(sing);% 前⼏个时刻的输⼊值pre_x = [0, 0, 0, 0];% 前⼏个时刻的输出值pre_y = [0, 0, 0, 0];out = zeros(1,len);for i=1:lenpre_x(1) = sing(i);% 差分⽅程out(i) = b(1)pre_x(1)+b(2)pre_x(2)+b(3)pre_x(3)+b(4)pre_x(4)-a(2)pre_y(2)-a(3)pre_y(3)-a(4)pre_y(4);pre_y(1) = out(i);for j = 4 : -1 : 2pre_x(j) = pre_x(j-1);pre_y(j) = pre_y(j-1);endendsubplot(312)my_plot(out)% 运⾏直接保存的.m⽂件Hd = my_filter;output = filter(Hd, sing);subplot(313)my_plot(output)end结果如下:。

IIR数字滤波器的MATLAB实现

IIR数字滤波器的MATLAB实现

第6章 IIR 数字滤波器的MATLAB 实现6.1 实验目的● 要求掌握IIR 数字滤波器的设计原理、设计方法和设计步骤; ● 能根据给定的滤波器指标进行滤波器设计;● 掌握数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理和步骤;6.2 实验原理及实例分析6.2.1 IIR 数字滤波器的传递函数及特点设IIR 滤波器的输入序列为x(n),则IIR 滤波器的输入序列x(n)与输出序列y(n)之间的关系可以用下面的方程式表示:)()()(1j n x a i n x b n y Nj j M i i -+-=∑∑==其中,j a 和i b 是滤波器的系数,其中j a 中至少有一个非零。

与之相对应的差分方程为:NN M M z a z a z b z b b z X z Y Z H ------++==....1....)()()(11110由传递函数可以发现无限常单位冲激响应滤波器有如下特点: (1) 单位冲激响应h(n)是无限长的。

(2) 系统传递函数H(z)在有限z 平面上有极点存在。

(3) 结构上存在着输出到输入的反馈,也就是结构上是递归型的。

6.2.2 IIR 数字滤波器的设计与实现IIR 数字滤波器的设计有多种方法,如频率变换法、数字域直接设计以及计算辅助设计等。

下面只介绍频率变换设计法。

首先考虑由模拟低通滤波器到数字低通滤波器的转换,其基本的设计过程如下:(1) 将数字滤波器的技术指标转换为模拟滤波器的技术指标; (2) 设计模拟滤波器G(S);(3) 将G(S)转换成数字滤波器H(Z);在低通滤波器的设计基础上,可以得到数字高通、带通、带阻滤波器的设计流程如下:(1)给定数字滤波器的设计要求(高通、带阻、带通);(2)转换为模拟(高通、带阻、带通)滤波器的技术指标;(3)转换为模拟低通滤波器的指标;(4)设计得到满足第三步要求的低通滤波器传递函数;(5)通过频率转换得到模拟(高通、带阻、带通)滤波器;(6)变换为数字(高通、带阻、带通)滤波器。

基于MATLAB的IIR数字滤波器设计与仿真

基于MATLAB的IIR数字滤波器设计与仿真

基于MATLAB的IIR数字滤波器设计与仿真一、概述在现代数字信号处理领域中,数字滤波器扮演着至关重要的角色。

其通过对输入信号的特定频率成分进行增强或抑制,实现对信号的有效处理。

无限脉冲响应(IIR)数字滤波器因其设计灵活、实现简单且性能优良等特点,得到了广泛的应用。

本文旨在基于MATLAB平台,对IIR数字滤波器的设计与仿真进行深入研究,以期为相关领域的研究与应用提供有益的参考。

IIR数字滤波器具有无限长的单位脉冲响应,这使得其在处理信号时能够展现出优秀的性能。

与有限脉冲响应(FIR)滤波器相比,IIR滤波器在实现相同性能时所需的阶数更低,从而减少了计算复杂度和存储空间。

在需要对信号进行高效处理的场合,IIR滤波器具有显著的优势。

MATLAB作为一款功能强大的数学软件,提供了丰富的函数和工具箱,使得数字滤波器的设计与仿真变得简单而高效。

通过MATLAB,我们可以方便地实现IIR滤波器的设计、分析和优化,从而满足不同应用场景的需求。

本文将首先介绍IIR数字滤波器的基本原理和特性,然后详细阐述基于MATLAB的IIR数字滤波器的设计方法和步骤。

接着,我们将通过仿真实验验证所设计滤波器的性能,并对其结果进行分析和讨论。

本文将总结IIR数字滤波器设计与仿真的关键技术和注意事项,为相关领域的研究人员和工程师提供有益的参考和启示。

1. IIR数字滤波器概述IIR(Infinite Impulse Response)数字滤波器是数字信号处理中常用的一类滤波器,它基于差分方程实现信号的滤波处理。

与FIR (Finite Impulse Response)滤波器不同,IIR滤波器具有无限长的单位脉冲响应,这意味着其输出不仅与当前和过去的输入信号有关,还与过去的输出信号有关。

这种特性使得IIR滤波器在实现相同的滤波效果时,通常具有更低的计算复杂度,从而提高了处理效率。

IIR滤波器的设计灵活多样,可以根据不同的需求实现低通、高通、带通和带阻等多种滤波功能。

基于matlab的IIR数字滤波器设计(doc 19页)

基于matlab的IIR数字滤波器设计(doc 19页)

在MATLAB 中,模拟滤波器的系统函数 H(S)=)()()1()((.....)2()1()1()(......)2()1(11S A S B N A S N A S A S A M B S M B S B S B N N M M =++++++++++--数字滤波器的系统函数 H(Z)=)()()1()(.....)2()1()1()(.....)2()1()1(1)1(1Z A Z B Z N A Z N A Z A A Z M B Z M B Z B B N N M M =++++++++++--------在实际工程中,需要的设计结果是系数向量B 和A ,用B 和A 来综合滤波器的硬件实现结构或软件运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。

如果需要滤波器系数,在运行程序后,只要在MATLAB 命令窗口键入系数向量名,则相应的系数就显示出来了。

2.1.2.程序设计实例分析(a )设计高通和带通Butterworth 数字滤波器我们给出四阶归一化 Butterworth 模拟滤波器的系统函数16131.24142.36131.21)(234++++=S S S S S H用双线性变换法从Ha (s )设计四阶带通butterworth数字滤波器)(Z H BP ,并图示|)(jw BP e H |,设计采样周期T=1s ,指标如下 ππ65.0,35.01==uc c w w现在我们分步进行:■建模由于本例主要涉及三个问题:(1) 由数字滤波器指标求相应的模拟滤波器指标;(2) 模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型);(3) 由相应的模拟滤波器到数字滤波器(双线性变换法)。

由于调用bilinear 函数将模拟滤波器转换成数字滤波器非常容易,并且有效抑制频率失真的问题,本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶Butterworth 模拟滤波器,然后调用bilinear 函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。

利用MATLAB设计IIR滤波器

利用MATLAB设计IIR滤波器

利用MATLAB设计IIR滤波器IIR滤波器是一种数字滤波器,它基于无限脉冲响应(Infinite Impulse Response)的概念。

与FIR滤波器相比,IIR滤波器具有更高的灵活性和更小的计算复杂度。

MATLAB是一种强大的数学软件,它提供了丰富的信号处理工具箱,可以用于设计、分析和实现各种数字滤波器,包括IIR滤波器。

设计IIR滤波器的一种常用方法是脉冲响应不变方法(Impulse Invariance Method)。

下面将以该方法为例,介绍如何使用MATLAB设计IIR滤波器。

首先,我们将使用MATLAB的`iirdesign`函数来设计IIR滤波器。

该函数的语法如下:```matlab[b, a] = iirdesign(wp, ws, rp, rs);```其中,`wp`是通带截止频率,`ws`是阻带截止频率,`rp`是通带衰减,`rs`是阻带衰减。

`b`和`a`分别代表滤波器的分子和分母系数。

例如,我们希望设计一个低通IIR滤波器,通带截止频率为0.4π,阻带截止频率为0.6π,通带衰减为3dB,阻带衰减为40dB。

则可以使用以下代码:```matlabwp = 0.4 * pi;ws = 0.6 * pi;rp = 3;rs = 40;[b, a] = iirdesign(wp, ws, rp, rs);```设计完成后,我们可以使用MATLAB的`freqz`函数来绘制滤波器的频率响应曲线。

代码示例如下:```matlab[H, w] = freqz(b, a);mag = 20 * log10(abs(H));figure;plot(w/pi, mag);xlabel('Normalized Frequency');ylabel('Magnitude (dB)');```上述代码中,`freqz`函数返回滤波器的频率响应`H`和频率向量`w`。

IIR滤波器matlab源程序

IIR滤波器matlab源程序

IIR滤波器matlab源程序(1)IIR一阶低通滤波器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)一阶高通滤波器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 嵌波滤波器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 滤波器clear;Ac=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低通滤波(Butterworth)% IIR Lowpass Use Butterworthclear;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:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif K<(N/2)G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=0:pi/300:pi;Hw2=1./(1+(tan(w/2)/omega0).^(2*N));plot(w/pi,Hw2);grid;(6)IIR高通滤波(Butterworth)% IIR Hightpass Use Butterworthclear;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:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=-2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2); endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif K<(N/2)G0=omega0/(omega0+1);a0=-(omega0-1)/(omega0+1);endw=(0+eps):pi/300:pi;Hw2=1./(1+(cot(w/2)/omega0).^(2*N));plot(w/pi,Hw2);grid;(7)IIR带通滤波(Butterworth)% IIR Bandpass Use Butterworthclear;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:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=4*c*(omega0*cos(theta(i))-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=2*(2*c^2+1-omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka3(i)=-(4*c*(omega0*cos(theta(i))+1))/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka4(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endG0=omega0/(1+omega0);a0(1)=-2*c/(1+omega0);a0(2)=(1-omega0)/(1+omega0); endw=(0+eps):pi/300:pi;Hw2=1./(1+((c-cos(w))./(omega0*sin(w))).^(2*N));plot(w/pi,Hw2);grid;(8)IIR带阻滤波(Butterworth)% IIR Bandstop Use Butterworthclear;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);theta(i)=pi*(N-1+2*i)/(2*N);endG=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);for i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif K<(N/2)G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=(0+eps):pi/300:pi;Hw2=1./(1+(sin(w)./(omega0*(c-cos(w)))).^(2*N));plot(w/pi,Hw2);grid;(9)IIR低通滤波(chebyshev 1)% IIR Lowpass Use Chebyshev Type 1clear;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:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:Komega(i)=omegap*sin(theta(i));endG=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);for i=1:KG(i)=(omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);endfor i=1:Ka1(i)=2*(omega0^2+omega(i)^2-1)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2) ;endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+ omega0^2+omega(i)^2);endif K<(N/2)G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);elseH0=sqrt(1/(1+ep^2));endf=0:1/300:10;Hf2=1./(1+ep^2*(cheby(N,tan(pi*f/fs)/omegap)).^2);plot(f,abs(Hf2));grid;(9)IIR低通滤波(chebyshev 1)% IIR Lowpass Use Chebyshev Type 2clear;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=omegas/sinh(a);K=floor(N/2);for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:Komega(i)=omegas/sin(theta(i));endfor i=1:KG(i)=(1+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);endfor i=1:Ka1(i)=2*(1-omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omeg a(i)^-2);endfor i=1:Ka2(i)=(1+2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(th eta(i))+omega0^-2+omega(i)^-2);endfor i=1:Kb1(i)=2*(1-omega(i))/(1+omega(i));endif K<(N/2)G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);elseH0=sqrt(1/(1+ep^2));endf=(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)chebyshev 中用到的函数cheby.mfunction CN=cheby(N,x)if x<=1CN=cos(N*acos(x));elseCN=cosh(N*log(x+sqrt(x.^2-1)));end。

Matlab课程设计利用MATLAB结合双线性变换法设计数字切比雪夫带通IIR滤波器代码

Matlab课程设计利用MATLAB结合双线性变换法设计数字切比雪夫带通IIR滤波器代码

开始↓读入数字滤波器技术指标↓将指标转换成归一化模拟低通滤波器的指标↓设计归一化的模拟低通滤波器阶数N 和截止频率↓模拟域频率变换,将H(P变换成模拟带通滤波器H(s ↓用双线性变换法将H(s转换成数字带通滤波器H(z ↓输入信号后显示相关结果求相应的幅频响应与相频响应↓50100150-202tx 1(tx1的波形50100150-202tx 2(tx2的波形50100150-202t x (t输入信号x 的波形10203040-0.01-0.00500.0050.01ty滤波器输出y 的波形clc;clear all ;结束%数字滤波器的技术指标Rp = 1; % 通带最大衰减Rs = 40;% 阻带最小衰减OmegaS1_1=350; % 通带截止频率OmegaS1_2=550;% 通带截止频率OmegaP1_1=400; % 阻带截止频率OmegaP1_2=500;% 阻带截止频率Fp=2000; % 抽样频率Wp1=2*pi*OmegaP1_1/Fp; % 模数频率变换Wp2=2*pi*OmegaP1_2/Fp;Ws1=2*pi*OmegaS1_1/Fp;Ws2=2*pi*OmegaS1_2/Fp;OmegaP1=2*Fp*tan(Wp1/2; % 非线性变换OmegaP2=2*Fp*tan(Wp2/2; % 非线性变换OmegaS1=2*Fp*tan(Ws1/2; % 非线性变换OmegaS2=2*Fp*tan(Ws2/2; % 非线性变换OmegaP0=sqrt(OmegaP1*OmegaP2;% 等效中心频率Bw=OmegaP2-OmegaP1; % 带通滤波器的通带宽度Eta_P0=OmegaP0/Bw; % 归一化处理Eta_P1=OmegaP1/Bw; % 归一化处理Eta_P2=OmegaP2/Bw; % 归一化处理Eta_S1=OmegaS1/Bw; % 归一化处理Eta_S2=OmegaS2/Bw; % 归一化处理Lemta_P_EquivalentLowPass=Eta_P2/(Eta_P2^2-Eta_P0^2; % 转换成低通参数Lemta_S1_EquivalentLowPass=-Eta_S1/(Eta_S1^2-Eta_P0^2; % 转换成低通参数Lemta_S2_EquivalentLowPass=Eta_S2/(Eta_S2^2-Eta_P0^2; % 转换成低通参数Lemta_S_EquivalentLowPass=min(Lemta_S1_EquivalentLowPass,Lemta_S2_EquivalentLowPass; % 取最小值% E求滤波器阶数[N, Wn]=cheb2ord(Lemta_P_EquivalentLowPass, Lemta_S_EquivalentLowPass, Rp, Rs,'s';% 滤波器设计[num1,den1]=cheby2(N,Rs,Wn,'s';[num2,den2]=lp2bp(num1,den1,OmegaP0,Bw;[num,den]=bilinear(num2,den2,Fp;[Z,P,K]=cheb1ap(N,Rp;w=linspace(1,1000,100*2*pi;[M1,N1]=zp2tf(Z,P,K; %将零极点形式转换为传输函数形式[M,N]=lp2bp(M1,N1,OmegaP0,Bw; %对低通滤波器进行频率变换转换为带通滤波器% 计算增益响应w = 0:pi/255:pi;h = freqz(num,den,w;g = 20*log10(abs(h;%绘制切比雪夫带通滤波器幅频特性figure;plot(w/pi,g;gridaxis([0 1 -60 5];xlabel('\频率/\pi'; ylabel('增益/dB'; title('切比雪夫II型带通滤波器幅频响应'; %Plot the poles and zeros[z,p,k]=tf2zp(num,den;figure;zplane(z,p; %绘制传输函数零极点title('?传输函数的零极点'f1=450;f2=600;t=0:0.0001:1x1=sin(2*pi*f1*t;x2=sin(2*pi*f2*t;x=x1+x2;figure;subplot(2,2,1%绘制x1的波形plot(x1;grid on;axis([0,50*pi,-3,3];xlabel('t';ylabel('x1(t';title('x1的波形';subplot(2,2,2%绘制x2的波形plot(x2;grid on;axis([0,50*pi,-3,3];xlabel('t';ylabel('x2(t';title('x2的波形';subplot(2,2,3%绘制输入x的波形plot(x;grid on;axis([0,50*pi,-3,3];xlabel('t';ylabel('x(t';title('输入信号x的波形'%X=fft(x;y=filter(num,den,x;%数字滤波器输出subplot(2,2,4; plot(real(y;grid on;axis([0,15*pi,-0.01,0.01];xlabel('t';ylabel('y';title('滤波器输出y的波形';附录:PPpppp5. 用双线性变换法设计IIR数字带通滤波器例21-3采用双线性变换法设计一个切比雪夫Ⅰ型数字带通滤波器,要求:通带wp1=0.3p,wp2=0.7p,Rp=1 dB;阻带ws1=0.2p,ws2=0.8p,As=20 dB解程序如下:wp1=0.4*pi;wp2=0.5*pi;ws1=0.35*pi;ws2=0.55*pi;Rp=1;As=40;T=0.0005;Fs=1/T;Omgp1=(2/T*tan(wp1/2;Omgp2=(2/T*tan(wp2/2;Omgp=[Omgp1,Omgp2];Omgs1=(2/T*tan(ws1/2;Omgs2=(2/T*tan(ws2/2;Omgs=[Omgs1,Omgs2];bw=Omgp2-Omgp1;w0=sqrt(Omgp1*Omgp2;bw=Omgs2-Omgs1;w0=sqrt(Omgs1*Omgs2; %[ZK(]模拟滤波器阻带带宽和中心频率[n,Omgn]=cheb2ord(Omgp,Omgs,Rp,As,'s' %计算阶数n和截止频率[z0,p0,k0]=cheb2ap(n,As; %设计归一化的模拟原型滤波器[n,Omgn]=cheb1ord(Omgp,Omgs,Rp,As,'s'[z0,p0,k0]=cheb1ap(n,Rp;ba1=k0*real(poly(z0;aa1=real(poly(p0;[ba,aa]=lp2bp(ba1,aa1,w0,bw;[bd,ad]=bilinear(ba,aa,Fs[H,w]=freqz(bd,ad;dbH=20*log10((abs(H+eps/max(abs(H;subplot(2,2,1,plot(w/2/pi*Fs,abs(H,'k';ylabel('|H|';title('幅度响应';axis([0,Fs/2,0,1.1];set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2];set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1];grid subplot(2,2,2,plot(w/2/pi*Fs,angle(H/pi*180,'k';ylabel('\phi';title('相位响应';axis([0,Fs/2,-180,180];set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2];set(gca,'YTickMode','manual','YTick',[-180,0,180];grid subplot(2,2,3,plot(w/2/pi*Fs,dbH;title('幅度响应( dB';axis([0,Fs/2,-40,5];ylabel('dB';xlabel('频率(\pi';set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2];set(gca,'YTickMode','manual','YTick',[-50,-20,-1,0];gridsubplot(2,2,4,zplane(bd,ad;axis([-1.1,1.1,-1.1,1.1];title('零极图';程序运行结果如下:n = 3Omgn =1.0e+003 * 1.0191 3.9252bd =0.0736 0.0000 -0.2208 0.0000 0.2208 -0.0000 -0.0736ad =1.0000 0.0000 0.9761 0.0000 0.8568 0.0000 0.2919 采用双线性变换法设计一个切比雪夫Ⅱ型数字带通滤波器,其它条件不变,则需要修改下面几句程序:bw=Omgs2-Omgs1;w0=sqrt(Omgs1*Omgs2; %[ZK(]模拟滤波器阻带带宽和中心频率[n,Omgn]=cheb2ord(Omgp,Omgs,Rp,As,'s' %计算阶数n和截止频率[z0,p0,k0]=cheb2ap(n,As; %设计归一化的模拟原型滤波器采用阻带截止频率来计算W0和BW,是因为切比雪夫Ⅱ型模拟低通原型是以阻带衰减As为主要设计指标的。

iir数字滤波器的设计matlab

iir数字滤波器的设计matlab

iir数字滤波器的设计matlabIIR数字滤波器的设计(Matlab)数字滤波器是一种用于信号处理的重要工具,可以对信号进行滤波、去噪和频率分析等操作。

其中,IIR(Infinite Impulse Response)数字滤波器是一种常见的数字滤波器,具有无限冲激响应的特点。

本文将介绍如何使用Matlab设计IIR数字滤波器。

首先,我们需要明确设计IIR数字滤波器的目标。

通常,设计IIR数字滤波器的目标是在满足一定的频率响应要求的前提下,使得滤波器的阶数尽可能低。

这样可以减少计算量和延迟,提高滤波器的实时性。

在Matlab中,可以使用`designfilt`函数来设计IIR数字滤波器。

该函数提供了多种设计方法和滤波器类型的选择。

常见的设计方法有巴特沃斯(Butterworth)、切比雪夫(Chebyshev)和椭圆(Elliptic)等。

这些方法在满足不同的频率响应要求和阶数限制方面有所不同。

以巴特沃斯滤波器为例,我们可以使用以下代码来设计一个低通滤波器:```matlabfs = 1000; % 采样频率fc = 100; % 截止频率order = 4; % 阶数[b, a] = butter(order, fc/(fs/2), 'low'); % 设计低通滤波器freqz(b, a); % 绘制滤波器的频率响应曲线```在上述代码中,`fs`表示采样频率,`fc`表示截止频率,`order`表示滤波器的阶数。

`b`和`a`分别是滤波器的分子和分母系数。

`butter`函数根据给定的阶数、截止频率和滤波器类型来设计滤波器。

设计完成后,我们可以使用`freqz`函数来绘制滤波器的频率响应曲线。

该函数可以显示滤波器的幅度响应和相位响应。

通过观察频率响应曲线,我们可以了解滤波器的频率特性,以及是否满足设计要求。

除了低通滤波器,我们还可以设计高通、带通和带阻滤波器。

例如,以下代码可以设计一个带通滤波器:```matlabfs = 1000; % 采样频率f1 = 100; % 通带下限频率f2 = 200; % 通带上限频率order = 4; % 阶数[b, a] = butter(order, [f1/(fs/2), f2/(fs/2)], 'bandpass'); % 设计带通滤波器freqz(b, a); % 绘制滤波器的频率响应曲线```在上述代码中,`f1`和`f2`分别表示带通滤波器的通带下限频率和通带上限频率。

IIR数字滤波器的MATLAB实现

IIR数字滤波器的MATLAB实现

实验六IIR数字滤波器的MATLAB实现1.忽略2.低通,采样频率为1Hz,通带临界频率f p =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率f s=0.3Hz,阻带内衰减大于25dB(αs=25)。

设计一个数字滤波器满足以上参数。

% Matlab使用归一化的频率参数(临界频率除以采样频率的1/2)。

%这样临界频率参数的取值范围在0和1之间,1代表Fs/2(用角频率表示的时候对应π)程序如下:FS=1 ;[n,Wn]=buttord(0.2/(FS/2),0.3/( FS /2),1,25);[b,a]=butter(n,Wn);freqz(b,a,512, FS);运行结果为:3.低通,采样频率为1Hz,通带临界频率f p =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率f s=0.3Hz,阻带内衰减大于25dB(αs=25)。

设计一个数字滤波器满足以上参数。

程序如下:FS=1 ;[n,Wn]=buttord(0.2*2*pi,0.3*2*pi,1,25,'s'); %临界频率采用角频率表示[b,a]=butter(n,Wn,'s');%freqs(b,a) %设计模拟的[bz,az]=impinvar(b,a,FS); %映射为数字的freqz(bz,az,512,FS)4.基于chebyshev1型模拟滤波器原型使用冲激不变转换方法设计数字滤波器,要求具有下面的参数指标:通带截止频率:π2.0=Ωp 通带波动值:dB R p 1=阻带截止频率:π3.0=Ωs 阻带波动值:dB A s 15=程序 如下:FS=10;T=1/FS;fp=0.2;fs=0.3;wp=fp/FS*2*pi;ws=fs/FS*2*pi;OmegaP=2*FS*tan(wp/2);OmegaS=2*FS*tan(ws/2);[n,Wn]=cheb1ord(OmegaP,OmegaS,1,15,'s')[b,a]=cheby1(n,1,Wn,'high','s');freqs(b,a) %设计模拟的[bz,az]=bilinear(b,a,FS); %映射为数字的freqz(bz,az,512,FS)bz,az5.一个椭圆数字滤波器的设计,要求采用双线性变换方法,指标参数如下:通带截止频率:π2.0=Ωp 通带波动值:dB R p 5.1=阻带截止频率:π3.0=Ωs 阻带波动值:dB A s 20=程序 如下:FS=1%通带、阻带截止频率Fl=0.2;Fh=0.3;%频率预畸wp=(Fl/FS)*2*pi; %临界频率采用角频率表示ws=(Fh/FS)*2*pi; %临界频率采用角频率表示OmegaP=2*FS*tan(wp/2);OmegaS=2*FS*tan(ws/2);[n,Wn]=buttord(OmegaP,OmegaS,1.5,20,'s');[b,a]=butter(n,Wn,'s');%freqs(b,a) %设计模拟的[bz,az]=bilinear(b,a,FS); %映射为数字的freqz(bz,az,512,FS,'whole')。

IIR滤波器的MATLAB实现

IIR滤波器的MATLAB实现

2、IIR 滤波器的MATLAB 实现2.1 IIR 滤波器的设计方法及原理IIR 数字滤波器是一种离散时间系统,其系统函数为:)()(1)(10z x z y z a zb Z H N k kk Mk kk =-=∑∑=-=- 假设M ≤N ,当M >N 时,系统函数可以看作一个IIR 的子系统和一个(M-N)的FIR 子系统的级联。

IIR 数字滤波器的设计实际上是求解滤波器的系数k a 和k b ,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。

如果在S 平面上去逼近,就得到模拟滤波器;如果在z 平面上去逼近,就得到数字滤波器。

2.1.1 用脉冲相应不变法设计IIR 数字滤波器利用模拟滤波器来设计数字滤波器,也就是使数字滤波器能模仿模拟滤波器的特性,这种模仿可以从不同的角度出发。

脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应ha(t),即将ha(t)进行等间隔采样,使h(n)正好等于ha(t)的采样值,满足 )()(nT h n h a =式中,T 是采样周期。

如果令Ha(s)是ha(t)的拉普拉斯变换,H(z)为h(n)的Z 变换,利用采样序列的Z 变换与模拟信号的拉普拉斯变换的关系得(1-1)则可看出,脉冲响应不变法将模拟滤波器的S 平面变换成数字滤波器的Z 平面,这个从s 到z 的变换z =e sT 是从S 平面变换到Z 平面的标准变换关系式。

⎪⎭⎫ ⎝⎛-=Ω-=∑∑∞-∞=∞-∞==k T j s X T jk s X T z X k a s k a e z sTπ21)(1)(图1-1脉冲响应不变法的映射关系由(1-1)式,数字滤波器的频率响应和模拟滤波器的频率响应间的关系为(1-2)这就是说,数字滤波器的频率响应是模拟滤波器频率响应的周期延拓。

正如采样定理所讨论的,只有当模拟滤波器的频率响应是限带的,且带限于折叠频率以内时,即(1-3)才能使数字滤波器的频率响应在折叠频率以内重现模拟滤波器的频率响应,而不产生混叠失真,即|ω|<π (1-4) 但是,任何一个实际的模拟滤波器频率响应都不是严格限带的,变换后就会产生周期延拓分量的频谱交叠,即产生频率响应的混叠失真,如图7-4所示。

基于MATLAB的IIR滤波器的设计及应用

基于MATLAB的IIR滤波器的设计及应用

基于MATLAB的IIR滤波器的设计及应用MATLAB是一种功能强大的工具,可以用于设计和应用数字滤波器。

本文将介绍MATLAB中基于无限脉冲响应(IIR)滤波器的设计和应用。

IIR滤波器是一种数字滤波器,它的输出是其输入信号和滤波器过去输出值的加权和。

IIR滤波器具有无限长脉冲响应,这意味着它对输入信号以前的无限多个样本都有影响。

IIR滤波器通常具有较低的计算复杂度和较小的存储需求,因此在很多应用中得到广泛使用。

在MATLAB中,可以使用`butter`、`cheby1`、`cheby2`、`ellip`等函数来设计IIR滤波器。

这些函数提供了不同类型的IIR滤波器设计方法,可以根据应用需求进行选择。

以`butter`函数为例,下面是一个设计一个低通滤波器的简单示例:```fs = 1000; % 采样率fc = 100; % 截止频率order = 4; % 阶数[b, a] = butter(order, fc/(fs/2)); % 设计低通滤波器%应用滤波器input_signal = randn(1, 1000); % 输入信号output_signal = filter(b, a, input_signal); % 输出信号```在上面的示例中,首先定义了采样率`fs`、截止频率`fc`和滤波器的阶数`order`。

然后使用`butter`函数设计了一个低通滤波器的系数`b`和`a`。

最后使用`filter`函数将滤波器应用到输入信号`input_signal`上,得到了输出信号`output_signal`。

除了设计和应用IIR滤波器,MATLAB还提供了其他函数来分析和评估滤波器的性能。

比如可以使用`freqz`函数绘制滤波器的频率响应曲线,使用`impz`函数绘制滤波器的脉冲响应曲线,使用`grpdelay`函数计算滤波器的组延迟等等。

除了设计和应用IIR滤波器,MATLAB还提供了许多其他的信号处理工具和函数,比如滤波器设计工具箱(Filter Design Toolbox)、信号处理工具箱(Signal Processing Toolbox)等,可以进一步扩展和优化滤波器设计和应用的功能。

IIR数字滤波器设计及软件实现程序代码matlab

IIR数字滤波器设计及软件实现程序代码matlab

实验四:IIR数字滤波器设计及软件实现1、原信号函数(1)原信号程序function st=mgstN=800;Fs=10000;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;fc1=Fs/10;fm1=fc1/10;fc2=Fs/20;fm2=fc2/10;fc3=Fs/40;fm3=fc3/10;xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);st=xt1+xt2+xt3;fxt=fft(st,N);subplot(4,1,1);plot(t,st);grid;xlabel('t/s');ylabel('s(t)');axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)µÄÐÎ');subplot(4,1,2);stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) y(t)µÄƵÆ×') axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')(2)输出波形2、高通滤波器(1)程序设计%高通滤波器设计fp=800;fs=700;Fs=10000;wp=2*fp/Fs;ws=2*fs/Fs;rp=1;rs=40;N=800;st=mgst;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;[N1,wpo]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N1,rp,rs,wpo,'high');y=filter(B,A,st);fyt=fft(y,N);figure(2);subplot(2,1,1),plot(t,y),grid,xlabel('t/y'),ylabel('y(t)'),subplot(2,1,2);stem(f,abs(fyt)/max(abs(fyt)),'.');grid;title('(b) y(t)µÄƵÆ×') axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')(2)输出波形3、带通滤波器(1)设计程序%带通滤波器fpl=400;fpu=600;fsl=350;fsu=650;Fs=10000;wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=1;rs=40;N=800;st=mgst;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;[N1,wpo]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N1,rp,rs,wpo);fyt=fft(y,N);figure(2);subplot(2,1,1),plot(t,y),grid,xlabel('t/y'),ylabel('y(t)'),subplot(2,1,2);y=filter(B,A,st);stem(f,abs(fyt)/max(abs(fyt)),'.');grid;title('(b) y(t)µÄƵÆ×') axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')(2)输出波形4、低通滤波器设计(1)设计程序%低通滤波器fp=350;fs=400;Fs=10000;wp=2*fp/Fs;ws=2*fs/Fs;rp=1;rs=40;N=800;st=mgst;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;[N1,wpo]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N1,rp,rs,wpo);y=filter(B,A,st);fyt=fft(y,N);figure(2);subplot(2,1,1),plot(t,y),grid,xlabel('t/y'),ylabel('y(t)'),axis([0,Tp/8,min(y),max(y)]),title('(a) y(t)µÄ²¨ÐÎ')subplot(2,1,2);stem(f,abs(fyt)/max(abs(fyt)),'.');grid;title('(b) y(t)µÄƵÆ×') axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')(2)输出波形5、带阻滤波器(1)程序如下%´ø×èÂ˲¨Æ÷Éè¼Æfpl=350;fpu=700;fsl=400;fsu=600;Fs=10000;wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=1;rs=40;N=800;st=mgst;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;[N1,wpo]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N1,rp,rs,wpo,'stop');y=filter(B,A,st);fyt=fft(y,N);figure(2);subplot(2,1,1),plot(t,y),grid,xlabel('t/y'),ylabel('y(t)'),axis([0,Tp/8,min(y),max(y)]),title('(a) y(t)µÄ²¨ÐÎ')subplot(2,1,2);stem(f,abs(fyt)/max(abs(fyt)),'.');grid;title('(b) y(t)µÄƵÆ×') axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')(2)输出波形。

IIR数字滤波器的MATLAB实现

IIR数字滤波器的MATLAB实现

IIR 数字滤波器的MATLAB 实现一、实验目的:1、要求掌握IIR 数字滤波器的设计原理、设计方法和设计步骤;2、能根据给定的滤波器指标进行滤波器设计;3、掌握数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理和步骤;二、实验原理:1 IIR 数字滤波器的传递函数及特点设IIR 滤波器的输入序列为x(n),则IIR 滤波器的输入序列x(n)与输出序列y(n)之间的关系可以用下面的方程式表示: 其中,ja 和ib 是滤波器的系数,其中ja 中至少有一个非零。

与之相对应的差分方程为:2 IIR 数字滤波器的设计与实现IIR 数字滤波器的设计,主要采用间接法,即:首先设计出低通模拟滤波器H(S);进行频率变换,将其转换为高通、带通、带阻滤波器;再用脉冲响应不变法或双线性变换法从模拟滤波器转换为数字滤波器。

对单极点的N 阶H(S)用部分展开式:冲激响应不变法取H(S)的单阶极点Sk 的指数函数sF KS e 作为H (Z )的极点双线性变换法是用⎥⎦⎤⎢⎣⎡+-=--11112Z Z T S 代换H (S )中的S 得到H(Z),双线性变换法可完全消除频率混叠失真但存在非线性频率失真,而冲激响应不变法存在混叠失真。

在不同的设计阶段MATLAB 的信号处理工具箱都给出了相应的滤波器设计函数,这些函数代表了不同类型的逼近函数的滤波器,常用的有巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器类型。

MATLAB 工具箱中的函数。

三、实验内容与步骤:1、基于chebyshev1型模拟滤波器原型使用冲激响应不变法设计数字滤波器,要求具有下面的参数指标:通带截止频率:0.1pπΩ=通带波动值:2pR dB=阻带截止频率:0.4sπΩ=阻带波动值:18sA dB=程序原代码如下:clear;close all;wp=0.1*pi;ws=0.4*pi;Rp=2;As=18;%参数T=1;Rip=10^(-Rp/20);Atn=10^(-As/20);[N,OmgC]=cheb1ord(wp*T,ws*T,Rp,As,'s');[cs,ds]=cheby1(N, Rp, OmgC,'s');[b,a]=impinvar(cs,ds,T);[db,mag,pha,grd,w]=freqz_m(b,a);subplot(2,2,1);plot(w/pi,mag);title('幅频特性');xlabel('w(/pi)');ylabel('|H(jw)|');axis([0,1,0,1.1]);set(gca,'XTickMode','manual','XTick',[0 0.1 0.4 0.5 1]); set(gca,'YTickMode','manual','YTick',[0 Atn Rip 1]);grid subplot(2,2,2);plot(w/pi,db);title('幅频特性(db)');xlabel('w(/pi)');ylabel('dB');axis([0,1,-40,5]);set(gca,'XTickMode','manual','XTick',[0 0.1 0.4 0.5 1]); set(gca,'YTickMode','manual','YTick',[-40 -As -Rp 0]);grid subplot(2,2,3);plot(w/pi,pha/pi);title('相频特性');xlabel('w(/pi)');ylabel('pha(/pi)');axis([0,1,-1,1]);set(gca,'XTickMode','manual','XTick',[0 0.1 0.4 0.5 1]);gridsubplot(2,2,4);plot(w/pi,grd);title('群延时');xlabel('w(/pi)');ylabel('Sample'); axis([0,1,0,12]);set(gca,'XTickMode','manual','XTick',[0 0.1 0.4 0.5 1]);grid %所使用的M 文件函数function [db,mag,pha,grd,w]=freqz_m(b,a)%滤波器的幅值响应(相对、绝对)、相位响应及群延迟 [H,w]=freqz(b,a,500); %500点的复频响应 mag=abs(H); %绝对幅值响应 db=20*log10(mag/max(mag)); %相对幅值响应 pha=angle(H); %相位响应 grd=grpdelay(b,a,w); %群延迟响应 实验图:2、(1) 用双线性变换法设计一个巴特沃斯低通IIR 数字滤波器。

利用MATLAB设计IIR滤波器

利用MATLAB设计IIR滤波器

4、数字滤波器设计比较
1、阶数对数字滤波器性能的影响
[B1,A1]=butter(1,0.2);[H1,W1]=freqz(B1,A1); [B2,A2]=butter(3,0.2);[H2,W2]=freqz(B2,A2); [B3,A3]=butter(5,0.2);[H3,W3]=freqz(B3,A3); [B4,A4]=butter(7,0.2);[H4,W4]=freqz(B4,A4); subplot(4,1,1) plot(W1*2/(2*pi),abs(H1));title('一阶'); subplot(4,1,2) plot(W2*2/(2*pi),abs(H2));title('三阶'); subplot(4,1,3) plot(W3*2/(2*pi),abs(H3));title('五阶'); subplot(4,1,4) plot(W4*2/(2*pi),abs(H4));title('七阶');
点击MATLAB主窗口下方的 “Start”(开始)按钮,按图选择 “ToolBox”→“Filter Design”→“Filter Design & Analysis Tool(FDATool)”,打开FDATool。
系数说明:
Rp:通带最大衰减系数 Rs:阻带最小衰减系数 Wp:通带截止频率(归一化) Ws:阻带截止频率(归一化) ‘s’:设计模拟滤波器 (缺省则设计数字滤波 器) n:滤波器阶数 Wn:实际频率与奈奎斯特频率(fs/2)的比值 [b,a]:系统函数的分子和分母的系数向量 [z,p,k]:滤波器的零点、极点和增益

切比雪夫(Chebyshev)II型 [b,a]=cheby2(n,Rs,Wn,’ftype’,’s’)

用MATLAB设计IIR数字滤波器 实验七

用MATLAB设计IIR数字滤波器 实验七

实验七:用MATLAB 设计IIR 数字滤波器1、用双线性变换法设计切比雪夫Ⅱ型数字滤波器,列出传递函数并描绘模拟和数字滤波器的幅频响应曲线。

① 设计一个数字低通滤波器,要求:ωp=0.2П,Rp=1dB ;阻带:ωs=0.35П,As=15dB , 滤波器采样频率Fs=10Hz 。

程序清单如下:wp=0.2*pi; %滤波器的通带截止频率 ws=0.35*pi; %滤波器的阻带截止频率 Rp=1;As=15; %滤波器的通阻带衰减指标ripple=10^(-Rp/20); %滤波器的通带衰减对应的幅度值 Attn=10^(-As/20); %滤波器的阻带衰减对应的幅度值 %转换为模拟滤波器的技术指标 Fs=10;T=1/Fs;Omgp=(2/T)*tan(wp/2);%原型通带频率的预修正 Omgs=(2/T)*tan(ws/2);%原型阻带频率的预修正 %模拟原型滤波器计算[n,Omgc]=cheb2ord(Omgp,Omgs,Rp,As,'s')[z0,p0,k0]=cheb2ap(n,As); %设计归一化的cheb2型模拟滤波器原型 ba1=k0*real(poly(z0)); %求原型滤波器的系数b aa1=real(poly(p0));[bb,aa]=lp2lp(ba1,aa1,Omgc); %变换为模拟低通滤波器 %用双线性变换法计算数字滤波器系数 [bd,ad]=bilinear(bb,aa,Fs) %求数字系统的频率特性[H,w]=freqz(bd,ad);dbH=20*log10((abs(H)+eps)/max(abs(H))); subplot(2,2,1);plot(w/pi,abs(H));ylabel('|H|');title('幅度响应');axis([0,1,0,1.1]);set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,1]);set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid subplot(2,2,2);plot(w/pi,angle(H)/pi);ylabel('\phi');title('相位响应');axis([0,1,-1,1]);set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,1]); set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid subplot(2,2,3);plot(w/pi,dbH);title('幅度响应(dB)');课程名称:数字信号处理 实验成绩: 指导教师: 实 验 报 告院系: 信息工程学院 班级: 学号: 姓名:日期: 2011. 12.26ylabel('dB');xlabel('频率(\pi)');axis([0,1,-40,5]);set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,1]); set(gca,'YTickMode','manual','YTick',[-50,-15,-1,0]);grid subplot(2,2,4);zplane(bd,ad);axis([-1.1,1.1,-1.1,1.1]);title('零极点图');程序运行结果如下:n = 3 Omgc = 10.2282 bd =0.1624 0.0056 0.0056 0.1624 ad =1.0000 -1.4073 0.9056 -0.16230.20.35100.17780.89131|H |幅度响应0.20.351-101φ相位响应0.20.351-15-10幅度响应(dB)d B频率(π)-101-1-0.500.51Real PartI m a g i n a r y P a r t零极点图由频率特性曲线可知,该设计结果再通阻带截止频率处能满足R p ≤1dB 、As ≥20dB 的设计指标要求,系统的极点全部在单位圆内,是一个稳定系统。

matlab设计iir低通滤波器代码

matlab设计iir低通滤波器代码

Matlab是一种强大的数学计算工具,广泛用于工程、科学和技术领域。

IIR(Infinite Impulse Response)滤波器是一种数字信号处理中常用的滤波器,可用于信号去噪、数据平滑等应用。

本文将介绍如何使用Matlab设计一个IIR低通滤波器的代码,以便读者能够了解IIR滤波器的原理和在Matlab中的实现方式。

IIR低通滤波器是一种将高频信号滤除,只保留低频信号的滤波器。

在数字信号处理中,我们经常需要对信号进行平滑处理或者去除噪音,这时就需要用到低通滤波器。

IIR低通滤波器相比于FIR(Finite Impulse Response)滤波器,具有更窄的过渡带和更好的通带纹波特性,在某些应用场景下具有更好的性能。

设计IIR低通滤波器的代码步骤如下:1. 定义滤波器的参数在设计IIR低通滤波器之前,首先需要定义滤波器的参数,包括通带边界频率、阻带边界频率、通带纹波和阻带衰减等。

这些参数将决定最终滤波器的性能。

2. 调用Matlab工具箱函数设计滤波器Matlab提供了多种设计IIR滤波器的工具箱函数,如butter、cheby1、cheby2和ellip等。

用户可以根据需要选择相应的函数来设计滤波器。

以butter函数为例,其调用形式为:[b, a] = butter(n, Wn, 'low');其中,n表示滤波器的阶数,Wn为归一化的截止频率。

3. 绘制幅频特性曲线设计完滤波器之后,可以通过freqz函数绘制滤波器的幅频特性曲线,以便直观地了解滤波器的性能。

除了以上的代码步骤,还可以对滤波器进行参数优化、性能评估等工作。

设计IIR低通滤波器的代码并不复杂,但需要对滤波器的原理和Matlab编程有一定的了解。

在实际应用中,设计IIR低通滤波器的代码可以根据具体的需求进行定制,比如考虑信号的频率特性、噪声的特点等。

通过不断地调试和优化滤波器的参数,可以得到满足实际需求的滤波器设计方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连理工大学实验报告
学院(系): 电子信息与电气工程学部 专业: 电子信息工程 班级: 姓 名: 学号: 组:
实验时间: 实验室: 大黑楼C221 实验台:
指导教师签字:
成绩: 实验名称
实验三 IIR 数字滤波器设计
1、实验目的和要求
(1)掌握双线性变换法设计IIR 数字滤波器。

(2)掌握脉冲响应不变法设计IIR 数字滤波器。

2、实验原理和内容
1. 巴特沃思低通滤波器
巴特沃思低通滤波器幅度平方函数定义为
|H (jΩ)|= a 2N c 211⎪⎪⎭
⎫ ⎝⎛ΩΩ+式中N 为正整数,代表滤波器的阶次,称为截止频率。

当时,有
c Ωc Ω=Ω
21)(2=Ωc a j H 即
dB j H j H c a a 3)
()0(lg 201=Ω=δ所以又称为巴特沃思低通滤波器的3分贝带宽。

c Ω巴特沃思低通滤波器的幅度特性如图所示。

图1 巴特沃思低通滤波器的幅度特性图2 切贝雪夫I型低通滤波器的幅度特性
•并分别绘制两种设计方法的频响曲线
(1)双线形变换法设计巴特沃斯IIR低通数字滤波器,代码如下:clc
clear
wp = 0.4*pi;
ws = 0.6*pi;
rp = 2;
rs = 15;
Ts = 0.0001;
Fs = 1/Ts; %采样频率
wp = 2/Ts*tan(wp/2);
ws = 2/Ts*tan(ws/2);
[N,wc]=buttord(wp,ws,rp,rs,'s');
[z,p,k]=buttap(N);
[b,a]=zp2tf(z,p,k);
[B,A]=lp2lp(b,a,wc);
[Bz,Az]=bilinear(B,A,Fs);
w=0:0.001:pi;
[H,w1]=freqz(Bz,Az,w);
H=20*log10(abs(H));
plot(w/pi,H);
grid on;
title('双线形变换法设计巴特沃斯IIR低通数字滤波器');
xlabel('频率/pi');
ylabel('幅度/dB');
00.10.20.30.40.5
0.60.70.80.91
-300-250
-200
-150
-100
-50
50
低低低低低低低低低低低低IIR 低低低低低低低
低低/pi 低低/d B
(2)直接法设计巴特沃斯IIR 低通数字滤波器,代码如下::
clc
clear
wp=0.4;ws=0.6;rp=2;rs=15;
[N,wc]=buttord(wp,ws,rp,rs);
[Bz,Az]=butter(N,wc);
w=0:0.001:pi;
[H,w1]=freqz(Bz,Az,w);
H=20*log10(abs(H));
plot(w/pi,H);
grid on;
title('直接法设计巴特沃斯IIR 低通数字滤波器');
xlabel('频率/pi');
ylabel('幅度/dB');
00.10.20.30.40.5
0.60.70.80.91
-300-250
-200
-150
-100
-50
50
低低低低低低低低低IIR 低低低低低低低
低低/pi 低低/d B
(3)设计一个巴特沃兹低通滤波器,给定技术指标是100p f Hz =300st f Hz =3p dB α=,抽样频率为。

20s dB α=1000s F Hz =代码如下:
clc
clear
fp=100;
fs=300;
Fs=1000;
af = 3;
as = 20;
wp = 2*fp/Fs;
ws = 2*fs/Fs;
[n, Wn]=buttord(wp,ws,af,as);
[b, a]=butter(n, Wn);
figure(1)
freqz(b,a,512,1);
title('巴特沃斯IIR 低通数字滤波器');
00.050.10.150.20.250.3
0.350.40.450.5
-200-150
-100
-500
Frequency (Hz)P h a s e (d e g r e e s )00.050.10.150.20.250.3
0.350.40.450.5
-150-100
-50
Frequency (Hz)M a g n i t u d e (d B )低低低低IIR 低低低低低低低
五、实验体会
本次实验中用了双线性变换法、冲击响应不变法及直接设计法设计了IIR 滤波器。

通过本次实验,我更直观的看到了滤波器的特性,对理论有了更深刻的认识。

Matlab 是一个十分强大的工具,有很多很好用的函数,比起人工计算设计滤波器来简单了很多很多,很直观也很实用。

相关文档
最新文档