MATLAB_IIR_高通滤波
MATLAB_IIR_带通通滤波
clear%%%%%%%%带通滤波器%%%%%%%%%%%WP1=0.1*pi;WP2=0.5*pi;WS1=0.04*pi;WS2=0.8*pi;Ap=1;As=50; % 数字带通滤波器技术指标T=2;%一般取2wc1=(2/T)*tan(WP1/2);wc2=(2/T)*tan(WP2/2);wr1=(2/T)*tan(WS1/2);wr2=(2/T)*tan(WS2/2);%双线性下,数字到模拟指标的转换B=wc2-wc1; %带通滤波器的通带宽度w0=sqrt(wc1*wc2);normwr1=(((wr1^2)-(w0^2))/(B*wr1));normwr2=(((wr2^2)-(w0^2))/(B*wr2));normwc1=(((wc1^2)-(w0^2))/(B*wc1));normwc2=(((wc2^2)-(w0^2))/(B*wc2)); %带通到低通的频率变换if abs(normwr1)>abs(normwr2) %选通带截止频率较大者normwr=abs(normwr2)else normwr=abs(normwr1)endnormwc=1; %将指标转换成归一化模拟低通滤波器的指标[N,normw]=buttord(normwc,normwr,Ap,As,'s')%设计归一化的模拟低通滤波器阶数N和截止频率[bLP,aLP]=butter(N,normw,'s'); %计算相应的模拟滤波器系统函数G(p)[bBP,aBP]=lp2bp(bLP,aLP,w0,B); %模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) [numd,dend]=bilinear(bBP,aBP,0.5); %用双线性变换法将H(s)转换成数字带通滤波器H(z) ?f=67; %周期67Hznt=1; %显示两个周期N1=128; T=1/f; dt=T/N1; %把周期分成128分k1=0:nt*N1-1; nx=k1*dt;x=square(2*pi*f*nx,50); %方波产生函数50%的占空比subplot(3,2,1);stem(nx,x);xlabel('tn(s)')ylabel('x')title('方波时域图67Hz')L=8*N1;X=fft(x,L);X1=fftshift(X);W1=linspace (-pi,pi,L);subplot(3,2,2);plot(W1/pi,abs(X1));%axis([-1 1 -20 25]);%对上面的图限幅xlabel('w(pi rad)')ylabel('abs(X)')title('方波频谱图')nh=0:200; %200点冲击响应序列[h,k2]=impz(numd,dend,nh);%单位脉冲响应subplot(3,2,3);plot(k2,h);%*T/length(nh)xlabel('t(s)')ylabel('h')title('BP滤波器单位冲激响应图')W2=linspace (-pi,pi,500);H=freqz(numd,dend,W2); %系统函数的频率响应subplot(3,2,4);plot(W2/pi,20*log10(abs(H)));axis([-1,1,-120,20]);grid onxlabel('w(pi rad)')ylabel('20*lg|H(jw)|(db)')title('BP滤波器频率响应(幅度谱)图')W21=[WP1 WS1 WP2 WS2]; %计算带阻滤波器指标h1=freqz(numd,dend,W21);fprintf('Ap1= %.4f\n',-20*log10(abs(h1(1))));fprintf('As1= %.4f\n',20*log10(abs(h1(2))));fprintf('Ap2= %.4f\n',-20*log10(abs(h1(3))));fprintf('As2= %.4f\n',20*log10(abs(h1(4))));y=conv(x,h);% 卷积运算ny=length(y);ny1=0:ny-1;subplot(3,2,5);plot(ny1*T/ny,y)xlabel('t(s)')ylabel('y')title('BP滤波后的输出信号时域图')nY=max(nx)+max(nh);nY1=8*nY; %fft点数W3=linspace(-pi,pi,nY1);Y=fft(y,nY1);Y1=fftshift(Y);subplot(3, 2 ,6);plot(W3/pi,abs(Y1));xlabel('w(pi rad)')ylabel('abs(Y1)')title('BP滤波后的输出信号频谱图')。
基于MATLAB的IIR滤波器的设计及应用
基于MATLAB的IIR滤波器的设计及应用IIR滤波器是一种无限脉冲响应滤波器,其设计和应用常常基于MATLAB进行。
在设计IIR滤波器时,首先需要确定滤波器的规格要求,例如带通或带阻滤波器、截止频率以及通带和阻带的最大衰减要求等。
设计IIR滤波器常用的方法有Butterworth、Chebyshev和Elliptic 等。
其中,Butterworth滤波器在通带区具有最平坦的幅频特性,而Chebyshev和Elliptic滤波器在通带和阻带区的幅频特性则更陡峭。
选择滤波器的类型取决于应用的具体需求。
通过MATLAB可以使用“butter”函数设计Butterworth滤波器,使用“cheby1”或“cheby2”函数设计Chebyshev滤波器,使用“ellip”函数设计Elliptic滤波器。
这些函数可以指定滤波器的类型、阶数、截止频率和衰减要求等参数。
设计得到的滤波器系数可以用于滤波器的实施。
IIR滤波器在信号处理领域有广泛的应用。
其中,带通滤波器用于从原始信号中提取感兴趣的频率成分,例如心电图中的QRS波群。
带阻滤波器则用于去除原始信号中的频率成分,例如去除电源线频率的干扰。
此外,IIR滤波器还可用于音频信号处理、图像处理等领域。
MATLAB提供了多种方法来应用IIR滤波器。
可以使用“filter”函数对信号进行滤波处理,其中需指定滤波器的系数和待滤波的信号。
另外,MATLAB还提供了“filtfilt”函数进行无相位滤波,即正向和反向滤波,从而减小滤波器的相应延迟。
总之,基于MATLAB的IIR滤波器设计和应用是信号处理领域的常见任务。
通过选择适当的滤波器类型和参数,可以实现对信号的滤波处理,满足各种应用的需求。
MATLAB提供了丰富的函数和工具,便于设计、实施和应用IIR滤波器。
基于MATLAB的IIR滤波器和FIR滤波器的设计及实现
毕业设计说明书外文摘要目录引言: (5)1 MATLAB的大体概念 (5)MATLAB简介 (5)MATLAB的特点⑴ (6)2 数字滤波器的简介 (7)IIR数字滤波器 (8)IIR数字滤波器的设计方式:.................................8IIR数字滤波器的设计思路 (9)利用模拟滤波器设计IIR数字滤波器的步骤 (10)IIR滤波器的典型设计法 (10)FIR数字滤波器的设计 (15)FIR数字滤波器的设计思想................... 错误!未定义书签。
常见的几种FIR滤波器设计方式。
(16)FIR数字滤波器的设计步骤................... 错误!未定义书签。
FIR滤波器的窗函数法设计法................. 错误!未定义书签。
3 IIR、FIR滤波器的MATLAB实现 (20)IIR滤波器的MATLAB实现 (21)FIR滤波器的MATLAB实现。
(22)IIR滤波器和FIR滤波器的比较 (23)终止语 (24)参考文献 (25)致谢 (26)引言:随着信息技术的迅猛进展,数字信号处置已成为一个极为重要的学科和技术领域,在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域取得了普遍的应用。
在数字信号处置的大体方式中。
通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处置。
其中,数字滤波是是数学信号处置的重要环节,它在数字信号处置中占据着重要的地位,它具有靠得住性好、精度高、爱活性大、体积小、重量轻等优势。
随着数字技术的进展,数字滤波器愈来愈受到人们的重视,广泛地应用于各个领域。
MATLAB是于1984 年由美国MathWorks 公司推出,该软件具有利用简单、方便,易编程,语言精练,数据库可任意扩充,采纳全新数据类型和面向对象编程技术等特点,有壮大的数值分析、矩阵运算、图形绘制、数据处置等功能,因此已被普遍应用在数学、科研和工程设计的各个领域。
matlab 生成irr滤波器系数差分方程
让我们深入探讨一下MATLAB中产生IIR滤波器系数差分方程的方法。
IIR滤波器是一种经典的数字滤波器,它具有无限脉冲响应(Infinite Impulse Response)的特点。
在MATLAB中,产生IIR滤波器系数差分方程可以通过多种方法实现,我们将逐步介绍其中的一些方法。
1. 我们需要清楚地了解IIR滤波器的概念和特点。
IIR滤波器是一种递归滤波器,它的输出不仅依赖于当前输入,还依赖于过去的输出和输入。
这种特点使得IIR滤波器在滤波效果上具有一定的优势,在一些应用中被广泛使用。
2. 接下来,我们可以使用MATLAB中的信号处理工具箱来生成IIR滤波器系数。
通过调用相关的函数和命令,我们可以指定IIR滤波器的阶数、通带频率、阻带频率等参数,然后MATLAB会自动生成对应的滤波器系数。
3. 除了使用信号处理工具箱,我们还可以手动计算IIR滤波器的系数。
这需要我们对IIR滤波器的原理有更深入的理解,可以通过巴特沃斯滤波器、切比雪夫滤波器等经典滤波器设计方法来产生系数。
4. 产生IIR滤波器系数之后,我们需要将其转化为差分方程的形式。
在MATLAB中,可以使用tf2sos函数或者zpk2sos函数来将IIR滤波器的传输函数转换为二阶节的级联形式。
5. 我们还可以通过MATLAB中的滤波器设计工具来可视化分析IIR滤波器的频率响应、脉冲响应等特性,以便更好地理解滤波器系数和差分方程之间的关系。
MATLAB中生成IIR滤波器系数差分方程的方法有多种,可以通过信号处理工具箱的函数、手动计算、转换传输函数等途径来实现。
通过深入了解和掌握这些方法,我们能够更好地应用IIR滤波器,并对数字滤波器的原理有更深入的理解。
就我个人而言,我认为掌握MATLAB中IIR滤波器系数差分方程的生成方法对于进行数字信号处理和滤波器设计是非常重要的。
通过实际操作和不断的学习,我们可以深入理解滤波器系数和差分方程之间的联系,从而在实际应用中更灵活地调整和优化滤波器的性能。
matlab滤波函数详解 -回复
matlab滤波函数详解-回复Matlab滤波函数详解在信号处理领域中,滤波是一项常用技术,用于去除噪声、平滑数据、增强信号等。
Matlab作为一种功能强大的科学计算软件,提供了丰富的滤波函数来帮助用户处理信号。
本文将详细介绍Matlab中常用的滤波函数,包括低通滤波、高通滤波、带通滤波以及无限冲激响应滤波器等。
同时,将逐步回答一系列问题,以帮助读者全面理解和使用这些滤波函数。
一、低通滤波器1. 什么是低通滤波器?低通滤波器是一种能够通过允许低频信号通过,而抑制高频信号的滤波器。
通过低通滤波器可以实现信号平滑、去噪以及降低信号带宽等目标。
2. Matlab中如何使用低通滤波?在Matlab中,可以使用函数`lowpass`来实现低通滤波。
例如,若要对信号`x`进行低通滤波,可以使用以下代码:matlabfs = 1000; 采样率Hzfc = 100; 截止频率Hzorder = 4; 滤波器阶数filtered_x = lowpass(x, fc, fs, order);上述代码中,`fs`表示信号的采样率,`fc`表示低通滤波器的截止频率,`order`表示滤波器阶数。
函数`lowpass`返回滤波后的信号`filtered_x`。
二、高通滤波器1. 什么是高通滤波器?高通滤波器是一种能够通过允许高频信号通过,而抑制低频信号的滤波器。
通过高通滤波器可以实现丢弃信号中的低频成分、突出信号中的高频特征等目标。
2. Matlab中如何使用高通滤波?在Matlab中,可以使用函数`highpass`来实现高通滤波。
以下代码演示了如何对信号`x`进行高通滤波:fs = 1000; 采样率Hzfc = 100; 截止频率Hzorder = 4; 滤波器阶数filtered_x = highpass(x, fc, fs, order);上述代码中,`fs`表示信号的采样率,`fc`表示高通滤波器的截止频率,`order`表示滤波器阶数。
基于matlab的切比雪夫及巴特沃斯低通高通滤波器的设计
巴特沃斯低通、切比雪夫低通、高通IIR滤波器设计05941401 1120191454 焦奥一、设计思路IIR滤波器可以分为低通、高通、带通、带阻等不同类型的滤波器,而以系统函数类型又有巴特沃斯、切比雪夫等滤波器。
其中巴特沃斯较为简单,切比雪夫较为复杂;低阶比高阶简单,但却有着不够良好的滤波特性。
在满足特定的指标最低要求下,低阶、巴特沃斯滤波器能更大程度地节省运算量以及复杂程度。
滤波器在不同域内分为数字域和模拟域。
其中数字域运用最广泛。
在设计过程中,一般是导出模拟域的滤波器,之后通过频率转换变为数字域滤波器,实现模拟域到数字域的传递。
在针对高通、带通、带阻的滤波器上,可以又低通到他们的变换公式来进行较为方便的转换。
综上,IIR滤波器的设计思路是,先得到一个满足指标的尽可能简单的低通模拟滤波器,之后用频域变换转换到数字域。
转换方法有双线性变换法、冲激响应不变法等。
虽然方法不同,但具体过程有很多相似之处。
首先将数字滤波器的指标转换为模拟滤波器的指标,之后根据指标设计模拟滤波器,再通过变换,将模拟滤波器变换为数字滤波器,是设计IIR滤波器的最基本框架。
以下先讨论较为简单的巴特沃斯低通滤波器。
二、巴特沃斯低通滤波假设需要一个指标为0~4hz内衰减小于3db、大于60hz时衰减不小于30db的滤波器。
其中抽样频率为400hz。
以双线性变换方法来设计。
首先将滤波器转换到模拟指标。
T =1f f ⁄=1400Ωf ′=2ff f =8ff f =Ωf ′f =0.02fΩf ′=2ff f =120ff f =Ωf ′f =0.3f根据双线性变换Ω=2f tan (f 2) 得到Ωf =25.14Ωf =407.62这就得到了模拟域的指标。
由巴特沃斯的方程Α2(Ω)=|f f (f Ω)|2=11+(ΩΩf )2f20ff |f f (f Ω)|=−10ff [1+(ΩΩf)2f] {20ff |f f (f Ωf )|≥−320ff |f f (f Ωf )|≤−30ff得到{ −10ff [1+(Ωf Ωf)2f ]≥−3−10ff [1+(Ωf Ωf )2f]≤−30当N取大于最小值的整数时,解出N=2,因此为二阶巴特沃斯低通滤波器。
基于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滤波器
利用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`。
基于matlab的iir数字带阻滤波器的设计及研究
基于matlab的iir数字带阻滤波器的设计及研究I. 引言数字信号处理在现代通信、图像处理以及音频处理等领域发挥着举足轻重的作用。
而数字滤波器作为数字信号处理中的重要组成部分,其设计和研究也备受关注。
特别是iir数字带阻滤波器在信号处理中具有重要的应用价值,例如在通信系统中抑制特定频率的干扰信号,或者在音频处理中去除某些频率范围内的噪声等。
本文旨在基于matlab评台,对iir数字带阻滤波器的设计和研究进行探讨和分析。
II. iir数字带阻滤波器的原理1. iir数字滤波器简介iir数字滤波器(Infinite Impulse Response Digital Filter)是一种以有限项的输入序列生成无限项的输出序列的数字滤波器。
其结构具有反馈回路,能够在频域内实现非常窄的滤波器通带和阻带。
iir滤波器相对于fir滤波器而言,具有更为复杂的频率响应曲线,更高的滤波器阶数能够实现更为陡峭的滤波特性。
2. 数字带阻滤波器概念数字带阻滤波器(Notch Filter)是一种能够去除某一特定频率范围内信号的滤波器。
它在通带范围内对信号不产生影响,而在带阻范围内能够有效地削弱或去除信号。
在实际应用中,数字带阻滤波器通常用于去除特定频率范围内的噪音或干扰信号。
III. 基于matlab的iir数字带阻滤波器设计1. 滤波器设计的基本流程iir数字带阻滤波器的设计包括以下基本步骤:a. 确定滤波器的通带、带阻频率范围以及通带和带阻范围的增益要求。
b. 选择合适的iir滤波器结构,例如巴特沃斯滤波器、切比雪夫滤波器或椭圆滤波器。
c. 根据设计要求和滤波器结构,计算出滤波器的阶次和滤波器的传输函数。
d. 实现传输函数,生成iir数字带阻滤波器的离散系统函数。
e. 进行滤波器的性能分析和优化。
2. matbal工具在iir数字带阻滤波器设计中的应用matlab作为一种强大的科学计算软件,提供了丰富的信号处理和滤波器设计工具箱。
基于MATLAB的IIR滤波器的设计
基于MATLAB的IIR滤波器的设计一、引言数字滤波是数字信号处理中的重要部分,它用于从输入信号中去除噪声、抑制干扰、改变频谱等。
IIR滤波器(Infinite Impulse Response,无限冲激响应滤波器)是一种数字滤波器,其特点是具有无限长度的冲激响应。
本文将介绍基于MATLAB的IIR滤波器的设计方法及实现。
二、IIR滤波器的基本原理IIR滤波器根据其传递函数的特性可分为低通、高通、带通和带阻滤波器。
其传递函数一般由差分方程表示,即y(n) = b(0)x(n) + b(1)x(n-1) + ... + b(nb)x(n-nb) - a(1)y(n-1) - ... - a(na)y(n-na)其中,y(n)为输出信号,x(n)为输入信号,b(k)和a(k)为滤波器的系数。
根据滤波器的类型和具体设计要求,可以通过选择适当的系数来设计出满足要求的IIR滤波器。
在MATLAB中,可以利用信号处理工具箱中的函数来实现IIR滤波器的设计。
以下是一种基于MATLAB的IIR滤波器设计流程:1.确定滤波器的类型和设计要求。
根据具体应用场景,选择滤波器的类型(低通、高通、带通或带阻),并确定滤波器的截止频率、通带增益、阻带增益等设计要求。
2. 利用信号处理工具箱中的函数进行滤波器设计。
MATLAB提供了多种函数来设计IIR滤波器,其中常用的有butter、cheby1、cheby2、ellip等。
这些函数可以根据设计要求自动生成滤波器的系数。
3. 通过查看滤波器的幅频响应、冲激响应、相位响应等来评估滤波器的性能。
MATLAB提供了freqz、impz、grpdelay等函数来实现对IIR滤波器性能的评估。
4. 利用设计好的滤波器对输入信号进行滤波。
可以利用filter函数对输入信号进行滤波处理,得到输出信号。
四、实例演示下面通过一个实际的例子来展示如何利用MATLAB设计和实现IIR滤波器。
例:设计一个低通IIR滤波器,截止频率为2kHz,阻带增益为40dB。
《Matlab课程设计》-数字切比雪夫高通IIR滤波器
目录摘要 (1)ABSTRACT (2)1 MATLAB简介 (3)1.1 MATLAB的概况 (3)1.2 MATLAB产生的历史背景 (3)1.3 MATLAB的语言特点 (4)1.4 MATLAB界面介绍 (5)1.4.1工作环境窗口 (5)1.4.2当前路径窗口 (6)2. 数字滤波器 (7)2.1数字滤波器的概念 (7)2.2数字滤波器的分类 (7)2.3数字滤波器的设计要求 (9)3. IIR数字滤波器的设计 (9)3.1设计原理 (9)3.2设计步骤 (10)4.切比雪夫IIR数字滤波器 (11)5.双线性变换法设计IIR数字滤波器 (12)5.1设计原理 (12)5.2双线性变换的优缺点 (14)6. 数字切比雪夫高通IIR滤波器设计 (17)6.1设计流程图 (17)6.2程序设计及运行结果 (18)6.2.1设计过程 (18)6.2.2运行结果 (20)7小结 (22)8参考文献 (23)摘要在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进行的,而数字滤波器是通过数值运算实现滤波,具有处理精度高、稳定、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,精度高,而且能够保留一些模拟滤波器的优良特性,因此应用很广。
Matlab软件以矩阵运算为基础,把计算、可视化及程序设计有机融合到交互式工作环境中,并且为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。
尤其是Matlab中的信号处理工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。
本文首先介绍了数字滤波器的概念,分类以及设计要求。
接着又逐步介绍了IIR数字滤波器,切比雪夫IIR 数字滤波器,以及用双线性变换法设计IIR数字滤波器。
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数字滤波器设计一.IIR数字滤波器介绍1.IIR数字滤波器的根本原理所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相比照例或者滤除某些频率成分的硬件。
实质上就是一个由有限精度算法实现的线性时不变离散系统。
它的根本工作原理是利用离散系统的特性对系统输入信号进展加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,因此数字滤波与模拟滤波的概念一样,根据其频率特性同样可以分为低通,高通,带通,带阻,只是信号的形式和实现滤波方式有所不同。
如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进展匹配转换,同样可以使用数字滤波器对模拟信号进展滤波。
数字滤波器滤波的数学表达式:y〔n〕=x(n)*h(n); 如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成为了数字滤波器。
上面的系统为时域离散系统时,其频域特性为:其中分别是数字滤波器的输出序列和输入序列的频域响应,是数字滤波器的频域响应。
可以看见按照输入信号的频谱特点和处理信号的目的适中选择滤波器的频域响应,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。
2.IIR数字滤波器传输特性IIR数字滤波器的系统函数可以表示为:H(Z)=,式中H(Z)称为N阶IIR滤波器函数。
3..数字滤波器的技术要求.我们通常设计的数字滤波器一般属于选频滤波器,。
我们的目的是要设计一个因果可实现的滤波器,另外买也要考虑到本钱和复杂性问题,因此实用中通带和阻带都允许一定的误差容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零。
而且,通带和阻带之间还要设置一定带宽的过渡带。
如如下图表示低通滤波器的技术要求:图中,分别表示通带截止频率和阻带截止频率,通带频率范围为0≤w≤,通带中要求〔1-δ1〕≤|H≤1,阻带截止频率范围≤w≤Π,再阻带中要求≤δ2,从p w 到s w 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。
IIR高通滤波器的matlab设计和在dsp上的实现
IIR高通滤波器的matlab设计和在dsp上的实现IIR高通滤波器的matlab设计和在dsp上的实现摘要在众多滤波器设计方法中,本设计着重讨论了IIR高通滤波器的设计。
对此滤波器的理论知识作了具体分析,通过matlab来对其进行设计并在dsp上直观形象的实现其功能。
在本设计中,我先采集一段语音信号,借助matlab软件,设计出一定性能指标参数的IIR高通滤波器对其进行处理,借此对比此语音信号滤波前后的变化,从而观察此滤波器的软件滤波效果。
并通过matlab来确定此滤波器的传递函数参数,再借助dsp实验系统来进行硬件上的实现。
实现时,先在CCS5000仿真开发,然后将程序加载到TMS320VC5416评估板上实时运行,结果实现了目标要求。
关键词:IIR高通滤波器 Matlab7.0 DspAbstractIn numerous filters design method, this design emphasized to discuss the design of a filter of IIR.Made the concrete nalysis to the theories knowledge of this filter, pass the Matlab to come as to it's carry on the design and keep the view image to carry out its function on the DSP.In this design, I collect a speech signal first, asking for help the software of Matlab, designing a filter of an IIR of certain function index sign parameter as to it's carry on the processing, borrow this contrast this speech signal wave in front and back of variety, thus observe a result of the software of this e to certain this filter to deliver the function parameter through a Matlab also, then ask for help the DSP experiment system to carry on the realization on the hardware.While carry out, imitates the true development in the CCS5000 first, then evaluate procedure add carry the TMS320VC5416 up the plank the solid luck go, as a resultcarrying out the target request.Keyword:A high filter of IIR Matlab7.0 Dsp一、模拟滤波器和数字滤波器的比较模拟滤波器是频率选择电路,用于放大或衰减单一频率成分的正弦信号或信号频谱的一部分。
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高通滤波器的设计
湖南文理学院课程设计报告实习名称:IIR高通滤波器的设计教学院部:电气与信息工程学院专业班级:通信工程09103班学生姓名:兰学生学号:指导教师:朱明旱完成时间:2012 年06月14日报告成绩:摘要此报告重点介绍了用双线性不变法设计IIR数字滤波器的基本流程,比较了各种设计方法的优缺点,总结了模拟滤波器的性能特征。
最后以双线性不变法设计了一个高通巴特沃斯IIR数字滤波器,介绍了设计步骤,然后在Matlab环境下进行了仿真与调试,实现了设计目标。
关键词:Matlab 双线性不变法 IIR数字滤波器巴特沃斯高通AbstractThis report introduced with emphasis of the basic flow of designing the IIR digit filterby the bilinear political reform, compared with each kind of design method's good and bad points, summarized analog filter's performance characteristic. Finally design one by the bilinear political reform to pass Butterworth high IIR digit filter, introduced the design procedure, then has carried on the simulation and the debugging under the Matlab environment, has achieved the project objective.Key word: Matlab bilinearity political reform the IIR digital filter pass high butterworth一、设计目的课题要求设计一个IIR 数字滤波器,高通,采用双线性变换法,用巴特沃斯实现,用matlab 软件对其进行仿真与调试。
利用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数字滤波器
实验21用双线性变换法设计IIR 数字滤波器(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word 格式会让很多部分格式错误,谢谢)XXXX 学号姓名处XXXX一、实验目的1. 加深对双线性变换法设计IIR 数字滤波器基本方法的了解。
2. 掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。
3. 了解MA TLAB 有关双线性变换法的子函数。
二、实验内容1. 双线性变换法的基本知识。
2. 用双线性变换法设计IIR 数字低通滤波器。
3. 用双线性变换法设计IIR 数字高通滤波器。
4. 用双线性变换法设计IIR 数字带通滤波器。
5. 用双线性变换法设计IIR 数字带阻滤波器。
三、实验环境MATLAB7.0四、实验原理1.实验涉及的MATLAB 子函数Bilinear功能:双线性变换——将s 域(模拟域)映射到z 域(数字域)的标准方法,将模拟滤波器变换成离散等效滤波器。
调用格式:[numd,dend]=bilinear(num,den,Fs);将模拟域传递函数变换为数字域传递函数,Fs 为取样频率。
[numd,dend]=bilinear(num,den,Fs,Fp);将模拟域传递函数变换为数字域传递函数,Fs 为取样频率,Fp 为通带截止频率。
[zd,pd,kd]=bilinear(z,p,k,Fs);将模拟域零极点增益系数变换到数字域,Fs 为取样频率。
[zd,pd,kd]=bilinear(z,p,k,Fs,Fp);将模拟域零极点增益系数变换到数字域,Fs 为取样频率,Fp 为通带截止频率。
[Ad,Bd,Cd,Dd]=bilinear(A,B,C,D,Fs);将模拟域状态变量系数变换到数字域,Fs 为取样频率。
2. 双线性变换法的基本知识双线性变换法是将整个s 平面映射到整个z 平面,其映射关系为11z 1z 1T 2s --+-=或2sT/12sT/1z -+=双线性变换法克服了脉冲响应不变法从s 平面到z 平面的多值映射的缺点,消除了频谱混叠现象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clear
%%%%%%%%高通滤波器%%%%%%%%%%%
WP=0.3*pi;WS=0.1*pi;
Ap=1;As=30; % 数字低通滤波器技术指标
T=2; %一般取2
wc=(2/T)*tan(WP/2);
wr=(2/T)*tan(WS/2);%双线性下,数字到模拟指标的转换
norwc=1/wc;
norwr=1/wr;
[N,normw]=buttord(norwc,norwr,Ap,As,'s');%设计归一化的模拟高通滤波器阶数N和截止频率
[bLP,aLP]=butter(N,normw,'s'); %计算相应的模拟滤波器系统函数G(p)
[bhp,ahp]=lp2hp(bLP,aLP,1);
[numd,dend]=bilinear(bhp,ahp,0.5) %用双线性变换法将H(s)转换成数字高通滤波器H(z)
f=67; %周期50Hz
nt=1; %显示两个周期
N1=128; T=1/f; dt=T/N1; %把周期分成128分
k1=0:nt*N1-1; nx=k1*dt;
x=square(2*pi*f*nx,50); %方波产生函数50%的占空比
subplot(3,2,1);
stem(nx,x);
xlabel('tn(s)')
ylabel('x')
title('方波时域图67Hz')
L=8*N1;
X=fft(x,L);
X1=fftshift(X);
W1=linspace (-pi,pi,L);
subplot(3,2,2);
plot(W1/pi,abs(X1));
xlabel('w(pi rad)')
ylabel('abs(X)')
title('方波频谱图')
nh=0:200; %200点冲击响应序列
[h,k2]=impz(numd,dend,nh);%单位脉冲响应
subplot(3,2,3);
plot(k2,h);%*T/length(nh)
xlabel('t(s)')
ylabel('h')
title('HP滤波器单位冲激响应图')
W2=linspace (-pi,pi,500);
H=freqz(numd,dend,W2); %系统函数的频率响应subplot(3,2,4);
plot(W2/pi,20*log10(abs(H)));
axis([-1,1,-120,20]);
grid on
xlabel('w(pi rad)')
ylabel('20*lg|H(jw)|(db)')
title('HP滤波器频率响应(幅度谱)图')
W21=[WP WS]; %计算高通滤波器指标
h1=freqz(numd,dend,W21);
fprintf('Ap= %.4f\n',-20*log10(abs(h1(1))));
fprintf('As= %.4f\n',20*log10(abs(h1(2))));
y=conv(x,h);% 卷积运算
ny=length(y);
ny1=0:ny-1;
subplot(3,2,5);
plot(ny1,y)% *T/ny
xlabel('t(s)')
ylabel('y')
title('HP滤波后的输出信号时域图')
nY=max(nx)+max(nh);
nY1=8*nY; %fft点数
W3=linspace(-pi,pi,nY1);
Y=fft(y,nY1);
Y1=fftshift(Y);
subplot(3, 2 ,6);
plot(W3/pi,abs(Y1));
xlabel('w(pi rad)')
ylabel('abs(Y1)')
title('HP滤波后的输出信号频谱图')。