文档库 最新最全的文档下载
当前位置:文档库 › 基于MATLAB的IIR和FIR滤波器的设计与实现

基于MATLAB的IIR和FIR滤波器的设计与实现

基于MATLAB的IIR和FIR滤波器的设计与实现
基于MATLAB的IIR和FIR滤波器的设计与实现

基于MATLAB的IIR和FIR滤波器的设计与实现

陈XX

(XXX学院电信XX班)

摘要:数字滤波是数字信号处理的重要内容,是由乘法器、加法器和单位延时器组成的一种运算过程,其功能是对输人离散信号进行运算处理,以达到改变信号频谱的目的。数字滤波器根据频域特性可分为低通、高通、带通和带阻四个基本类型。本文用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,利用了一种基于Matlab软件的数字滤波器设计方法,完成了低通,高通,带通,帯阻IIR滤波器的设计, 文中深入分析了该滤波器系统设计的功能特点、实现原理以及技术关键,阐述了使用MATLAB进行带通滤波器设计及仿真的具体方法。最后把整个设计方案用GUIDE界面制作并演示出来。文章根据IIR滤波器的设计原理,重点介绍巴特沃斯数字滤波器的设计方法和操作步骤,并以实例形式列出设计程序。

关键词:信号巴特沃斯 Matlab IIR滤波器脉冲响应不变法

一、引言

在信号处理过程中,所处理的信号往往混有噪音,从接收到的信号中消除或减弱噪音是信号传输和处理中十分重要的问题。根据有用信号和噪音的不同特性,提取有用信号的过程称为滤波,实现滤波功能的系统称为滤波器。在近代电信设备和各类控制系统中,数字滤波器应用极为广泛。数字滤波器精确度高、使用灵活、可靠性高,具有模拟设备所没有的许多优点,已广泛地应用于各个科学技术领域, 例如数字电视、语音、通信、雷达、声纳、遥感、图像、生物医学以及许多工程应用领域。随着信息时代数字时代的到来,数字滤波技术已经成为一门极其重要的学科和技术领域。以往的滤波器大多采用模拟电路技术,但是,模拟电路技术存在很多难以解决的问题,例如,模拟电路元件对温度的敏感性,等等。而采用数字技术则避免很多类似的难题,当然数字滤波器在其他方面也有很多突出

的优点,在前面部分已经提到,这些都是模拟技术所不能及的,所以采用

数字滤波器对信号进行处理是目前的发展方向。

二、IIR 数字滤波器的设计 2.1 IIR 滤波器的基本结构

一个数字滤波器可以用系统函数表示为:

01()()()

1M

k k

k N

k

k k b z

Y z H z X z a z -=-==

=-∑∑(2-1)

由这样的系统函数可以得到表示

系统输入与输出关系的常系数线形差

分程为:

()()()N

M

k k k k y n a y n k b x n k ===-+-∑∑

(2-2)

可见数字滤波器的功能就是把输入序列x (n )通过一定的运算变换成输出序列y (n )。不同的运算处理方法决定了滤波器实现结构的不同。无限冲激响应滤波器的单位抽样响应h (n )是无限长的,其差分方程如(2-2)式所示,是递归式的,即结构上存在着输出信号到输入信号的反馈,其系统函

数具有(2-1)式的形式,因此在z 平面的有限区间(0<︱z ︱<∞)有极点存在。

前面已经说明,对于一个给定的线

形时不变系统的系统函数,有着各种不同的等效差分方程或网络结构。由

于乘法是一种耗时运算,而每个延迟

单元都要有一个存储寄存器,因此采

用最少常熟乘法器和最少延迟支路的

网络结构是通常的选择,以便提高运

算速度和减少存储器。然而,当需要

考虑有限寄存器长度的影响时,往往

也采用并非最少乘法器和延迟单元的

结构。 IIR 滤波器实现的基本结构有:

(1)IIR 滤波器的直接型结构; 优点:延迟线减少一半,变为N 个,可节省寄存器或存储单元; 缺点:其它缺点同直接I 型。 通常在实际中很少采用上述两种结构实现高阶系统,而是把高阶变成一系列不同组合的低阶系统(一、二阶)来实现。

(2)IIR 滤波器的级联型结构; 特点:

?系统实现简单,只需一个二阶

节系统通过改变输入系数即

可完成;

?极点位置可单独调整;

?运算速度快(可并行进行);

?各二阶网络的误差互不影响,

总的误差小,对字长要求低。缺点:不能直接调整零点,因多个二阶节的零点并不是整个系统函数的零点,当需要准确的传输零点时,级联型最合适。

(3)IIR滤波器的并联型结构。

优点:

?简化实现,用一个二阶节,通过变换系数就可实现整个系

统;

?极、零点可单独控制、调整,调整α1i、α2i只单独调整了第i

对零点,调整β1i、β2i则单独

调整了第i对极点;

?各二阶节零、极点的搭配可互换位置,优化组合以减小运算

误差;

?可流水线操作。

缺点:

?二阶阶电平难控制,电平大易导致溢出,电平小则使信噪比

减小。

2.2 用脉冲响应不变法设计IIR 滤波器

2.2.1 IIR低通数字滤波器实例

数字低通的技术指标为:

Wp=0.2πrad Ap=1dB T=2s Ws= 0.3πrad As=15dB

程序为:

T=2; %采样周期

fs=1/T;%采样频率为采样周期倒数Wp=0.2.*pi;Ws=0.3.*pi; %设计归一化通带阻带截止频率

Ap=1;As=15;%设置通带最大最小衰减[N,Wc]=buttord(Wp,Ws,Ap,As,'s');

%调用butter函数确定巴特沃斯滤波

器阶数

[B,A]=butter(N,Wc,'s'); %调用

butter函数设计巴特沃斯滤波器

W=linspace(0,pi,400*pi); %指定一

段频率值

[D,C]=impinvar(B,A,fs); %调用脉冲

不变法¨

Hz=freqz(D,C,W); %·返回频率值| plot(W/pi,abs(Hz)/abs(Hz(1))); %

绘出巴特沃斯数字低通滤波器的幅频

特性曲线

grid on;%显示栅格

title('巴特沃斯低通数字滤波器');%标题

xlabel('Frequency/Hz'); %x轴标签ylabel('Magnitude'); %y轴标签gtext(‘100230 陈外流’)

得出幅频特性如图1

所示:

图1 2.2.2 IIR高通数字滤波器

数字高通的技术指标为:

Wp=0.4πrad Ap=2dB T=2s Ws= 0.2πrad As=15dB

程序为:

T=2; %采样周期

fs=1/T; %采样频率

Wp= 0.4.*pi; Ws= 0.2.*pi; %设置归一化通带和阻带截止平率

Ap= 2;As=15; %设置通带最大最小衰减

[N,Wc]=buttord(Wp,Ws,Ap,As,'s'); %调用butter函数确定巴特沃斯滤波器阶数

[B,A]=butter(N,Wc,

'high','s'); %调用butter函数设计巴特沃斯

W=linspace(0,pi,400*pi);%指定一段频率值

[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法·¨

Hz=freqz(D,C,W); %返回频率响应| plot(W/pi,abs(Hz)/abs(Hz(1))); %

绘制巴特沃斯数字高通滤波器的幅频

响应曲线

grid on;%显示栅格

title('巴特沃斯高通数字滤波器

');%标题

xlabel('Frequency/Hz');%x轴标签

ylabel('Magnitude');%y轴标签

gtext(‘100230 陈外流’)

得出幅频特性如图2

所示:

图2

2.2.3 IIR带通数字滤波器

带通滤波器技术指标为:

Wp=[0.25π 0.35π]rad Ap=1dB T=2s

Ws=[ 0.15π 0.40π]rad As=10dB 程序为;

T=2; %采样周期

fs=1/T; %采样频率

Wp=[0.25.*pi

0.35.*pi];Ws=[0.15.*pi

0.4.*pi]; %设置归一化通带和阻带截止平率

Ap= 1;As= 10; %设置通带最大最小衰减[N,Wc]=buttord(Wp,Ws,Ap,As,'s') ; %调用butter函数确定巴特沃斯滤波

器阶数

[B,A]=butter(N,Wc,'bandpass','s '); %调用butter函数设计巴特沃斯滤波器

W=linspace(0,pi,400*pi); %指定一段频率值

[D,C]=impinvar(B,A,fs); %调用脉冲响应不变法¨

Hz=freqz(D,C,W); %·返回频率值| plot(W/pi,abs(Hz)); %绘出巴特沃

斯数字滤波器的幅频特性曲线

grid on;%显示栅格

title('巴特沃斯带通滤波器');%标题

xlabel('Frequency/Hz');%x轴标签

ylabel('Magnitude');%y轴标签

gtext(‘100230 陈外流’)

得出幅频特性如图3

所示:

图3

2.2.4 用脉冲响应不变法设计IIR带阻数字滤波器实例。

带阻滤波器技术指标为:

Wp=[0.15π 0.40π]rad Ap=1dB T=2s Ws=[ 0.25π 0.35π]rad As=11dB 程序为:

T=2;%采用周期为2 fs=1/T; %采样频率Wp=[0.15.*pi

0.40.*pi];Ws=[0.25.*pi

0.35.*pi];%设置归一化通带和阻带截止平率

Ap= 1;As= 11; %设置通带最大最小衰减[N,Wc]=buttord(Wp,Ws,Ap,As,'s') ; %调用butter函数确定巴特沃斯滤波器阶数

[B,A]=butter(N,Wc,'stop','s'); %调用butter函数设计巴特沃斯滤波器÷W=linspace(0,pi,400*pi);%指定一段频率值

[D,C]=impinvar(B,A,fs); %调用脉冲响应不变法·¨

Hz=freqz(D,C,W); %·返回频率响应plot(W/pi,abs(Hz));%绘出巴特沃斯数字滤波器的幅频特性曲线

grid on; %显示栅格title('巴特沃斯带阻滤波器');%显示标题‘巴特沃斯带阻滤波器

xlabel('Frequency/Hz'); %x轴标签gtext(‘100230 陈外流’)

得出幅频特性如图4所示:

图4

结论:

经观察滤波器幅频特性图得,巴特沃斯滤波器的特点是通带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。

低通滤波器容许低频信号通过, 但减弱(或减少)频率高於截止频率的信号的通过。高通滤波器容许高频信号通过, 但减弱(或减少)频率低于於截止频率的信号的通过。带通滤波器容许一定频率范围信号通过,

但减弱(或减少)频率低于於下限截止频率和高于上限截止频率的信号的通过。

带阻滤波器减弱(或减少)一定频率范围信号, 但容许频率低于於下限截止频率和高于上限截止频率的信号的通过。对于巴特沃斯滤波器低通和带通效果较好,而高通和帯阻效果较差。

2.3双线性变换法设计IIR滤波器

2.3.1 IIR数字高通滤波器

fs=150;fp=250; %模拟技术指标Fs=1000;T=1/Fs; %fs为采样频率,fp为中心频率

wp=fp/Fs*2*pi; %滤波器的通带截止频率

ws=fs/Fs*2*pi; %滤波器的阻带截止频率

Rp=1;As=20; %滤波器的通阻带衰减指标

ripple=10^(-Rp/20); %滤波器的通带衰减对应的幅度值

Attn=10^(-As/20); %滤波器的阻带衰减对应的幅度值

Omgp=(2/T)*tan(wp/2); %原型通带频率的预修正

Omgs=(2/T)*tan(ws/2); %原型阻带频率的预修正

[n,Omgc]=ellipord(Omgp,Omgs, Rp,As,'s') %计算阶数n和截止频率[z0,p0,k0]=ellipap(n,Rp,As); %设计归一化的椭圆模拟滤波器原型

ba=k0*real(poly(z0)); %求原型滤波器的系数 b

aa=real(poly(p0)); %求原型滤波器的系数 a

[ba1,aa1]=lp2hp(ba,aa,Omgc); %变换为模拟高通滤波器

[bd,ad]=bilinear(ba1,aa1,Fs)

%求数字系统的频率特性

[H,w]=freqz(bd,ad); %绘制模拟滤波器频响特性

dbH=20*log10((abs(H)+eps)/ma x(abs(H)));

subplot(2,1,1),plot(w/2/pi*F s,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,1,2),plot(w/2/pi*F s,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 gtext('100230 陈外流')

频率特性如图5所示

图5

由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1 dB、As≥20 dB的设计指标要求。由n=3可知,设计的椭圆数字高通滤波器是一个3阶的系统,极点全部在Z平面的单位圆内,是一个稳定的系统。

2.3.2 IIR数字低通滤波器

%IIR数字低通滤波器设计程序wp=0.25*pi; %滤波器的通带截止频率ws=0.4*pi; %滤波器的阻带截止频率Rp=1;As=15; %滤波器的通阻带衰减指标

ripple=10^(-Rp/20); %滤波器的通带衰减对应的幅度值

Attn=10^(-As/20);%滤波器的阻带衰减对应的幅度值

Fs=100;T=1/Fs;

Omgp=(2/T)*tan(wp/2);%原型通带频率的预修正

Omgs=(2/T)*tan(ws/2);%原型阻带频率的预修正

[n,Omgc]=buttord(Omgp,Omgs,R p,As,'s'); %计算阶数n和截止频率[z0,p0,k0]=buttap(n); %设计归一化的巴特沃思模拟滤波器原型

ba=k0*real(poly(z0)); %求原型滤波器的系数b

aa=real(poly(p0)); %求原型滤波器的系数a

[ba1,aa1]=lp2lp(ba,aa,Omgc); %变换为模拟低通滤波器

[bd,ad]=bilinear(ba1,aa1,Fs) [sos,g]=tf2sos(bd,ad) %转换

成级联型

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/ma x(abs(H)));

subplot(2,1,1),plot(w/pi,abs (H));

ylabel('|H|');title('巴特沃斯数字低通滤波器幅度响应'); axis([0,1,0,1.1]);

set(gca,'XTickMode','manual' ,'XTick',[0,0.25,0.4,1]); set(gca,'YTickMode','manual' ,'YTick',[0,Attn,ripple,1]); grid

subplot(2,1,2),plot(w/pi,ang le(H)/pi);

ylabel('\phi');title('巴特沃斯数字低通滤波器相位响应');

axis([0,1,-1,1]);

set(gca,'XTickMode','manual' ,'XTick',[0,0.25,0.4,1]); set(gca,'YTickMode','manual' ,'YTick',[-1,0,1]);

grid on;

gtext('100230 陈外流')

频率特性如图6

所示:

图6

由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1 dB、As≥15 dB的设计指标要求,系统的极点全部在单位

圆内,是一个稳定的系统。由n

=5可知,设计的巴特沃斯数字

低通滤波器是一个5阶的系统,

原型Ha(s)在s=-∞处有5个零

点,映射到z=-1处。

2.3.3 IIR数字带通滤波器%IIR数字滤波器带通滤波器设计程序

fs=150;fp=250;Fs=1000;T=1

/Fs;

wp1=0.3*pi;wp2=0.7*pi; %滤

波器的通带截止频率

ws1=0.2*pi;ws2=0.8*pi; %滤波器的阻带截止频率

Rp=1;As=20; %滤波器的通阻带衰减指标

T=0.001;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);%模拟通带带宽和中心频率[n,Omgn]=cheb1ord(Omgp,Omgs, Rp,As,'s') %计算阶数n和截止频率[z0,p0,k0]=cheb1ap(n,Rp); %设计归一化的模拟滤波器原型

ba1=k0*real(poly(z0)); %求原型滤波器的系数b

aa1=real(poly(p0)); %求原型滤波器的系数a

[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,1,1),plot(w/2/p

i*Fs,abs(H),'k');

ylabel('|H|');title('切比

雪夫带通滤波器幅度响应

');axis([0,Fs/2,0,1.1]);

set(gca,'XTickMode','manu

al','XTick',[0,fs,fp,Fs/2

]);

set(gca,'YTickMode','manu

al','YTick',[0,Attn,rippl

e,1]);grid

subplot(2,1,2),plot(w/2/p

i*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]); gtext('100230 陈外流')

频率特性图如图7

所示

图7

由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1 dB、As≥20 dB的设计指标要求。由n=3可知,由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅰ型数字带通滤波器是一个6阶的系统,极点全部在Z平面的单位圆内,

是一个稳定的系统。

2.3.4 IIR数字带阻滤波器

%IIR数字滤波器带阻滤波器设计程序fp=[500 3000];fs=[1000 2000]; rp=3;rs=18;Fs=10000;%模拟技术指标

wp=fp*2*pi/Fs; %滤波器的通带截止

频率

ws=fs*2*pi/Fs; %滤波器的阻带截止频率

wap=2*Fs*tan(wp/2);

was=2*Fs*tan(ws/2); %模拟低通原型滤波器设计

[n,wn]=cheb1ord(wap,was,rp,r s,'s'); %求切贝雪夫滤波器的最小阶数和3dB截止频率

[z,p,k]=cheb1ap(n,rp); %求取模拟切贝雪夫低通滤波器的原型[bp,ap]=zp2tf(z,p,k); %将零极点增益转换为分子分母多项式系数向量形式 zp2tf 求传递函数 %模拟低通原型->模拟带通滤波器

bw=wap(2)-wap(1); %模拟带通滤波器带宽

w0=sqrt(wap(1)*wap(2)); %中心频率

[bs,as]=lp2bs(bp,ap,w0,bw); %模拟低通原型->模拟带通滤波器 %双线性变换法设计数字滤波器

[bz1,az1]=bilinear(bs,as,Fs) ;

[h2,w2]=freqz(bz1,az1,1024,F s); %求频率响应参数

subplot(2,1,1);

plot(w2,20*log10(abs(h2))); title('切比雪夫数字带阻滤波器数字滤波器幅度响应(dB)'); xlabel('频率 Hz');

ylabel('幅度 |H(ej\omega|'); grid;

subplot(2,1,2);

plot(w2,angle(h2)/pi);

title('切比雪夫数字带阻滤波器数字滤波器相位响应(rad)'); xlabel('频率 Hz');

ylabel('相位 rad');

grid on;%显示栅格

gtext('100230 陈外流')

频率特性图形如图8

所示

图8

由程序数据和曲线可知,该设计结果在通阻带截止频率处能满足Rp ≤1 dB 、As ≥20 dB 的设计指标要求。由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅰ型数字带阻滤波器是一个6阶的系统,极点全部在z

平面的单位圆内,是一个稳定的系统。 三、FIR 滤波器设计 3.1 FIR 滤波器的基本概念

FIR 滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR 滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。滤波器设计是根据给定滤波器的频率特性,求得满足该特性的传输函数。

2.2 FIR 滤波器的特点

有限长单位冲激响应(FIR )滤波器有以下特点:

(1) 系统的单位冲激响应()h n 在有限个n 值处不为零;

(2) 系统函数()H z 在0z >处收敛,极点全部在z = 0处(因果系统);

(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。 设FIR 滤波器的单位冲激响应

()h n 为一个N 点序列,01n N ≤≤-,

则滤波器的系统函数为

()()H z h n z n ∧=*-∑

(2-1)

就是说,它有(N —1)阶极点在z = 0处,有(N —1)个零点位于有限z 平面的任何位置。 优点 :

(1)很容易获得严格的线性相位,避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处

理、数据传输等系统中非常重要;(2)可得到多带幅频特性;

(3)极点全部在原点(永远稳定),无稳定性问题;

(4)任何一个非因果的有限长序列,总可以通过一定的延时,转变为因果序列,所以因果性总是满足;(5)无反馈运算,运算误差小。

缺点:

(1)因为无极点,要获得好的过渡带特性,需以较高的阶数为代价;(2)无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设计程序完成。

3.2 FIR滤波器的种类

(1)数字集成电路FIR滤波器

一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,使其系统函数H(z)具有指定的频率特性。

(2)DSP芯片FIR滤波器

另一种是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。而且,就是同一公司的不同系统的DSP 芯片,其编程指令也会有所不同,开发周期较长。

(3)可编程FIR滤波器

还有一种是使用可编程逻辑器件,FPGA/CPLD。FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。3.3 FIR 数字滤波器设计

FIR滤波器设计的任务是选择有限长度的()

h n,使传输函数()jw

H e满足一定的幅度特性和线性相位要求。由于FIR 滤波器很容易实现严格的线性相位,所以FIR 数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。

设计过程一般包括以下三个基本问题:

(1)根据实际要求确定数字滤波器性能指标;

(2)用一个因果稳定的系统函数去逼近这个理想性能指标;

(3)用一个有限精度的运算去实现这个传输函数。

3.3.1用窗函数法设计FIR低通滤波器

clc

clear

close all;

Ws=(2*pi*1800)/8000;Wp=(2*pi*2000)/80 00;%指标通带截止频率wp=1800Hz;阻带截止频率ws=2000Hz

B=Wp-Ws;

N=ceil((12*pi)/B);

wc=[1500/8000];%采样频率8000Hz hn=fir1(N-1,wc,blackman(N));%要求通带波纹αp≤1dB,阻带衰减αs≥40dB

freqz(hn)

仿真结果如图9

所示

图9

3.3.2 高通FIR数字滤波器

%设计逼近截止频率wc=0.6π的理想高通的30阶FIR数字滤波器

%将m=[0,0,1,1]该为m=[1,1,0,0],则设计出的是逼近截止频率wc=0.6π的理想低通的30阶FIR数字滤波器

clc

clear

close all

f=[0,0.6,0.6,1];m=[0,0,1,1];

b=fir2(30,f,m);

n=0:30;

subplot(211);stem(n,b,'.')

xlabel('n');

ylabel('h(n)');

axis([0,30,-0.4,0.5]);[h,w]=freqz(b,1,512);

subplot(212);

plot(w/pi,20*log10(abs(h)));grid; axis([0,1,-80,0]);

xlabel('w/pi');

ylabel('幅度(dB)');

结果如图10

所示:

图10

3.3.3用窗函数法设计FIR 带通滤波器

%用窗函数法设计FIR 带通滤波器

%指标:低端通带截止频率wlp=0.35π;低端阻带截止频率wls=0.2π

% 高端通带截止频率whp=0.65π;高端阻带截止频率whs=0.8π

%要求通带最大衰减Rp=1dB,阻带最小衰减Rs=60dB clc clear close all ; wls=0.2*pi; wlp=0.35*pi; whp=0.65*pi; B=wlp-wls; N=ceil((12*pi)/B);

wc=[wlp/pi-6/N,whp/pi+6/N]; hn=fir1(N-1,wc,blackman(N)); hw=fft(hn,512);

w=[0:511]*2/512; figure; subplot(211);

plot(w,20*log10(abs(hw)));grid; subplot(212); stem(hn,'.'); figure; freqz(hn) 结果如图11所示:

图11

3.3.4用窗函数法设计FIR 带阻滤波器

指标如下:

下通带截至频率 π2.0=ls w ;上通带截止频率 π8.0=us w ;

阻带下限频率 π35.0=lp w ;阻带上限频率 π65.0=up w 通带最大衰减 dB p 1=α;阻带最小衰减 S α=60dB wlp=0.2*pi;

wls=0.35*pi; wus=0.65*pi; wup=0.8*pi;

wc=[(wlp+wls)/2/pi,(wus+wup)/2/p i];

B=wls-wlp;

N=ceil(12*pi/B)-1; n=0:N-1; window=kaiser(N); [h1,w]=freqz(window,1) subplot(2,2,1)

stem(window,'.'); xlabel('n'); title(' kaiser 窗函数');

subplot(2,2,2) plot(w/pi,20*log(abs(h1)/abs(h1(1))));

grid; xlabel('w/pi'); ylabel('幅度(dB)');

title(' kaiser 窗函数的频谱');

hn = fir1(N-1,wc,'stop'); [h2,w]=freqz(hn,1,512); subplot(2,2,3) stem(n,hn,'.'); xlabel('n'); ylabel('h(n)'); title(' kaiser 窗函数的单位脉冲响应');

subplot(2,2,4)

plot(w/pi,20*log(abs(h2)/abs(h2(1))));

grid; xlabel('w/pi'); ylabel('幅度(dB)');

title(' kaiser 带阻滤波器的幅度特性'); 结果如图12所示

图12

结果分析:

在设计中 ,如果该滤波器的特性不满足要求 ,那么 ,原有参数必须作适当调整。这在程序中很容易实现 ,只需对参数进行重新设定 ,就可以得

到新条件下滤波器的特性。采用最优化设计方法时大大减小了滤波器的阶数,从而减小了滤波器的体积,并最终降低了滤波器的成本。这样使得设计

出来的滤波器更为简单经济。因而在实际的滤波器设计中,这种最优化方法是完全可行的。在实际应用中,如果需要对某一信号源进行特定的滤波,并要检验滤波效果,应用传统方法实施起来比较繁琐。在Matlab环境下,可先用软件模拟产生信号源,再设计滤波器对其进行滤波。

同样是设计一个FIR低通数字滤波器,综合分析可以看出:

(1)窗函数法在阶数较低时,阻带特性不满足设计要求,只有当滤波器阶数较高时,使用海明窗和凯塞窗基本可以达到阻带衰耗要求;

(2)频率采样法偏离设计指标最明显,阻带衰减最小,而且设计比采用窗函数法复杂。只有适当选取过渡带样点值,才会取得较好的衰耗特性;(3)利用等波纹切比雪夫逼近法则的设计可以获得最佳的频率特性和衰耗特性,具有通带和阻带平坦,过渡带窄等优点。

综上所述,FIR 滤波器很容易实现具有严格线性相位的系统, 使信号经过处理后不产生相位失真,舍入误差小,而且稳定,因此越来越受到广泛的重视。MATLAB软件的诞生,使数字信号处理系统的分析与设计得简单,它已经成为电子工程师必备的一个工具软件。

通过这几个实验,对设计数字滤波器的整个过程有了很好的掌握。其中对双线性变换法,巴特沃斯设计模拟滤波器的运用,也更加清楚了。

通过对数字带通滤波器的设计,熟悉了MATLAB的运行环境,初步掌握了MATLAB语言在数字信号处理中一些基本库函数的调用和编写基本程序等应用;熟悉了滤波器设计的一般原理,对滤波器有了一个感性的认识;学会了数字高通滤波器设计的一般步骤;加深了对滤波器设计中产生误差的原因以及双线性变换法优缺点的理解和认识。总之,使理论联系了实际,巩固并深化了对课本基本知识的认识和理解,使理论得以升华。

四、考文献

[1]《数字信号处理》(第三版),丁玉美,高西全.西安电子科技大学出版社,2000. [2]《MATLAB及在电子信息课程中的应用》,陈怀堔,吴大正,高西全.电子工业出版社,2006.

[3]《MATLAB 7.0从入门到精通》,求是科技.人民邮电出版社,2006. [4]《数字信号处理(第三版)》学习指导,高西全,丁玉美.西安科技大学出版社,2001.

[5]程佩青著,《数字信号处理教程》.清华大学出版社,2001

[6]Sanjit K. Mitra著,孙洪.余翔宇译.《数字信号处理实验指导书(MATLAB版)》.电子工业出版社,2005年1月

[7]郭仕剑等,《MATLAB 7.x数字信号处理》,人民邮电出版社,2006年[8]胡广书,《数字信号处理理论算法与实现》,清华大学出版社,2003年

fir低通滤波器matlab编程滤波前后图形

Matlab实现振动信号低通滤波 附件txt中的数字是一个实测振动信号,采样频率为5000Hz,试设计一个长度为M=32的FIR低通滤波器,截止频率为600Hz,用此滤波器对此信号进行滤波。 要求: (1)计算数字截止频率; (2)给出滤波器系数; (3)绘出原信号波形; (4)绘出滤波后的信号波形; 解答过程: 第一部分:数字截止频率的计算 数字截止频率等于截止频率除以采样频率的一半,即 n=600/5000/2=0.24第二部分:滤波器系数的确定 在matlab中输入如下程序,即可得到滤波器系数: n=32 Wn=0.24 b=fir1(n,Wn) 得到的滤波器系数b为 Columns 1 through 9 -0.0008-0.0018-0.0024-0.00140.00210.00750.01100.0077-0.0054Columns 10 through 18

-0.0242-0.0374-0.02990.00870.07560.15370.21660.24070.2166Columns 19 through 27 0.15370.07560.0087-0.0299-0.0374-0.0242-0.00540.00770.0110Columns 28 through 33 0.00750.0021-0.0014-0.0024-0.0018-0.0008 第三部分:原信号波形 将附件4中的dat文件利用识别软件读取其中的数据,共1024个点,存在TXT文档中,取名bv.txt,并复制到matlab的work文件夹。 在matlab中编写如下程序: x0=load('zhendong.txt');%找到信号数据地址并加载数据。 t=0:1/5000:1023/5000;%将数据的1024个点对应时间加载 figure(1); plot(t,x0); xlabel('t/s'); ylabel('幅值'); 运行之后就得到如下波形,即振动信号的原始波形图: 1.5 1 0.5 幅 值

数字滤波器matlab的程序

数字滤波器matlab的源代码 function lvbo(Ua,Ub,choise) %参考指令:lvbo(2*pi,10*pi,1/0/-1) U1=min(Ua,Ub); U2=max(Ua,Ub); Us=16*U2; T=2*pi/Us; T_sum=4*max(2*pi/Ua,2*pi/Ub); sum=T_sum/T; t=T:T:T_sum; x=sin(U1*t)+0.8*sin(U2*t); X=DFT(x); figure(1); subplot(221) U=Us/sum:Us/sum:Us; stem(U,abs(X));grid on axis([Us/sum,Us/2,0,1.2*max(abs(X))]) title('原模拟信号采样频谱图') Ucd=U1+(U2-U1)*1/5;Usd=U2-(U2-U1)*1/5; switch choise case 1 Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); case -1 Hz_ejw=IIR_DF_CF(Ucd,1,Usd,30,T,sum); case 0 Hz_ejw=FIR_DF_HM(U1,U2,T,sum); otherwise Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); end Y=X.*Hz_ejw; y=1/sum*conj(DFT(conj(Y))); figure(1); subplot(224) plot(t,real(y)); title('模拟信号滤波后');grid on axis([0,T_sum,-max(real(y))*1.5,max(real(y))*1.5]) subplot(222); plot(t,x); hold on

基于MATLAB的FIR数字低通滤波器设计.doc

基于MATLAB的FIR数字低通滤波器设计 ..基于MATLAB的FIR数字低通滤波器设计作者: 周龙刚(陕西理工学院物理与电信工程学院通信工程专业2011级4班,陕西汉中723003)指导老师: 井敏英[摘要]FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。 本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1实现窗函数法中的哈明窗设计FIR低通滤波器。[关键词] FIR数字滤波器;线性相位窗函数;法哈明窗;MatlabDesigning FIR low-pass digital filter based on VHDL Zhoulonggang(Grade11,Class4,Major of Communication Engineering,School of Physics and Telecommunication Engineering , Shaanxi University of Technology,Hanzhong 723003,Shaanxi)Tutor:JingYingMinAbstract:FIR digital filter is an important part of digital signal processing,the FIR digitalfilter with linear phase, so it has been widely applied in the collection and processing of information in the course of. This paper introduces the concept of FIR digital filter with linear phase conditions, analysis of the window functionmethod and frequency sampling method and the ripple

matlab程序之——滤波器(带通-带阻)教学内容

m a t l a b程序之——滤波器(带通-带阻)

matlab程序之——滤波器(带通,带阻) 以下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意! 1.带通滤波器 function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs) %带通滤波 %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半 %即,f1,f3,fs1,fsh,的值小于 Fs/2 %x:需要带通滤波的序列 % f 1:通带左边界 % f 3:通带右边界 % fs1:衰减截止左边界 % fsh:衰变截止右边界 %rp:边带区衰减DB数设置 %rs:截止区衰减DB数设置 %FS:序列x的采样频率 % f1=300;f3=500;%通带截止频率上下限 % fsl=200;fsh=600;%阻带截止频率上下限 % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值 % Fs=2000;%采样率 % wp1=2*pi*f1/Fs; wp3=2*pi*f3/Fs; wsl=2*pi*fsl/Fs; wsh=2*pi*fsh/Fs; wp=[wp1 wp3]; ws=[wsl wsh]; % % 设计切比雪夫滤波器; [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs); [bz1,az1]=cheby1(n,rp,wp/pi); %查看设计滤波器的曲线 [h,w]=freqz(bz1,az1,256,Fs); h=20*log10(abs(h));

figure;plot(w,h);title('所设计滤波器的通带曲线');grid on; y=filter(bz1,az1,x); end 带通滤波器使用例子 %-------------- %带通滤波器测试程序 fs=2000; t=(1:fs)/fs; ff1=100; ff2=400; ff3=700; x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t)+sin(2*pi*ff3*t); figure; subplot(211);plot(t,x); subplot(212);hua_fft(x,fs,1); % y=filter(bz1,az1,x); y=bandp(x,300,500,200,600,0.1,30,fs); figure; subplot(211);plot(t,y); subplot(212);hua_fft(y,fs,1); %调用到的hua_fft()函数代码如下 function hua_fft(y,fs,style,varargin) %当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱 %当style=1时,还可以多输入2个可选参数 %可选输入参数是用来控制需要查看的频率段的 %第一个是需要查看的频率段起点 %第二个是需要查看的频率段的终点 %其他style不具备可选输入参数,如果输入发生位置错误 nfft= 2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft) %nfft=1024;%人为设置FFT的步长nfft y=y-mean(y);%去除直流分量 y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布 y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。

matlab的fir高通数字滤波器的设计和分析

摘要 无限长脉冲数字滤波器的设计方法只考虑了幅度特性,没有考虑相位特性,所设的滤波器一般是某种确定的非线性相位特性。有限脉冲响应(FIR)滤波器在保证了幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。 本课题利用MATLAB软件实现。MATLAB是“矩阵实验室”(MATrix LABoratoy)的缩写,是一种科学计算软件,它使用方便,输入简捷,运算高效,内容丰富,因此利用MATLAB软件,通过一系列较为系统的函数法,根据已知的技术指标,就可以设计出满足要求的滤波器。 关键字:MATLAB;窗函数;FIR带阻数字滤波器;线性相位

目录 1.FIR滤波器简介 (3) 1.1 FIR的特点 (3) 2.2线性相位 (3) 2.主要设计内容 (5) 3.窗函数 (6) 3.1常用窗函数 (6) 3.2窗函数的指标 (9) 4应用窗函数法设计 FIR 数字滤波器的步骤 (10) 4.1数字高通滤波器的设计: (10) 总结 (11) 参考文献 (12) 附录 (13)

1.FIR 滤波器简介 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数 学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR )滤波器和有限冲激响应(FIR )滤波器。 1.1 FIR 的特点 FIR 滤波器的主要优点为:系统总是稳定的,FIR 滤波器的系统函数可以表示为 (2-1) 易知,H (z ) 在 Z 平面上有 N -1个零点,z =0 是 N -1 阶极点,因此FIR 系统总是稳定的(极点都在单位圆内)。FIR 滤波器的优点之二:容易实现线性相位。当 FIR 系统的单位冲激响应满足 时,该系统具有线性 相位。 (N 为奇数) (2-2) (N 为偶数) (2-3) FIR 滤波器的优点之三:允许设置多通带(或多阻带)滤波器。FIR 滤波器的优点之四:FIR 滤波器可以采用 FFT 方法实现其功能,从而大大提高效率。FIR 滤波器的缺点:由于 FIR 系统只有零点,因此这类系统不像FIR 滤波器不像 IIR 滤波器那样容易取得比较好的通带与阻带衰减特性。要取得较好的衰减特性,一般要求 H (z ) 的阶次较高。综合起来看, FIR 滤波器具有IIR 滤波器没有的许多特点,得到了越来越广泛的应用。 FIR 滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法;这里我主要讨论在MATLAB 环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能 2.2线性相位 一个单一频率的正弦信号通过一个系统,假设它通过这个系统的时间需要t ,则这个信号的输出相位落后原来信号wt 的相位。从这边可以看出,一个正弦信号通过一个系统落后的相位等于它的w *t ;反过来说,如果一个频率为w 的正弦信号通过系统后,它的相位落后delta ,则该信号被延迟了delta /w 的时间。在实 11 1) 1(10)()()()(--=-----=-===∑∑N N n n N N N n n z z f z n h z z n h z H )1()(n N h n h --±=2/)1()(--=N ωω?2/)1(2/)(--=N ωπω?

完整的维纳滤波器Matlab源程序

完整的维纳滤波器Matlab源程序学术2009-11-20 20:31:58 阅读308 评论0 字号:大中小 完整的维纳滤波器Matlab源程序 clear;clc; %输入信号 A=1; %信号的幅值 f=1000; %信号的频率 fs=10^5; %采样频率 t=(0:999); %采样点 Mlag=100; %相关函数长度变量 x=A*cos(2*pi*f*t/fs); %输入正弦波信号 xmean=mean(x); %正弦波信号均值 xvar=var(x,1); %正弦波信号方差 xn=awgn(x,5); %给正弦波信号加入信噪比为20dB的高斯白噪声 figure(1) plot(t,xn) %绘制输入信号图像 title('输入信号图像') xlabel('x轴单位:t/s','color','b') ylabel('y轴单位:f/HZ','color','b') xnmean=mean(xn) %计算输入信号均值xnms=mean(xn.^2) %计算输入信号均方值xnvar=var(xn,1) %计算输入信号方差 Rxn=xcorr(xn,Mlag,'biased'); %计算输入信号自相关函数figure(2) subplot(221) plot((-Mlag:Mlag),Rxn) %绘制自相关函数图像 title('输入信号自相关函数图像') [f,xi]=ksdensity(xn); %计算输入信号的概率密度,f 为样本点xi处的概率密度 subplot(222) plot(xi,f) %绘制概率密度图像 title('输入信号概率密度图像') X=fft(xn); %计算输入信号序列的快速离散傅里叶变换 Px=X.*conj(X)/600; %计算信号频谱 subplot(223) semilogy(t,Px) %绘制在半对数坐标系下频

滤波器设计MATLAB

数字信号处理

第一章概述 《数字信号处理》课程是通信专业的一门重要专业基础课,是信息的数字化处理、存储和应用的基础。通过该课程的课程设计实践,使我们对信号与信息的采集、处理、传输、显示、存储、分析和应用等有一个系统的掌握和理解,巩固和运用在《数字信号处理》课程中所学的理论知识和实验技能,掌握数字信号处理的基础理论和处理方法,提高分析和解决信号与信息处理相关问题的能力,为以后的工作和学习打下基础。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。 其中,设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用

最广泛的是双线性变换法。 我们在课本中学到基本设计过程是: ①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; ②设计过渡模拟滤波器; ③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。 而MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。 第二章总体方案设计 首先我将所给信号用MATLAB作图分析,然后通过观察st的幅频特性曲线,确定用高通滤波器作为处理信号的滤波器。选取滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB 为参数。 然后通过编程序调用MATLAB滤波器设计函数ellipord和ellip设计椭圆滤波器;通过编程序调用函数cheb1ord和cheby1设计切比雪夫滤波器,并绘图显示其幅频响应特性曲线。最后使用用滤波器实现函数filter,用两个滤波器分别对信号st进行滤波后绘图显示时域波形,观察滤波效果。 实验程序框图如图所示:

基于matlab的FIR低通高通带通带阻滤波器设计

基于matlab的FIR低通-高通-带通-带阻滤波器设计

————————————————————————————————作者:————————————————————————————————日期:

北京师范大学 课程设计报告 课程名称: DSP 设计名称:FIR 低通、高通带通和带阻数字滤波器的设计姓名: 学号: 班级: 指导教师: 起止日期: 课程设计任务书

学生班级: 学生姓名: 学号: 设计名称: FIR 低通、高通带通和带阻数字滤波器的设计 起止日期: 指导教师: 设计目标: 1、采用Kaiser 窗设计一个低通FIR 滤波器 要求: 采样频率为8kHz ; 通带:0Hz~1kHz ,带内波动小于5%; 阻带:1.5kHz ,带内最小衰减:Rs=40dB 。 2、采用hamming 窗设计一个高通FIR 滤波器 要求: 通带截至频率wp=rad π6.0, 阻带截止频率ws=rad π4.0, 通带最大衰减dB p 25.0=α,阻带最小衰减dB s 50=α 3、采用hamming 设计一个带通滤波器 低端阻带截止频率 wls = 0.2*pi ; 低端通带截止频率 wlp = 0.35*pi ; 高端通带截止频率 whp = 0.65*pi ; 高端阻带截止频率 whs = 0.8*pi ; 4、采用Hamming 窗设计一个带阻FIR 滤波器 要求: 通带:0.35pi~0.65pi ,带内最小衰减Rs=50dB ; 阻带:0~0.2pi 和0.8pi~pi ,带内最大衰减:Rp=1dB 。

FIR 低通、高通带通和带阻数字滤波器的设计 一、 设计目的和意义 1、熟练掌握使用窗函数的设计滤波器的方法,学会设计低通、带通、带阻滤波器。 2、通过对滤波器的设计,了解几种窗函数的性能,学会针对不同的指标选择不同的窗函数。 二、 设计原理 一般,设计线性相位FIR 数字滤波器采用窗函数法或频率抽样法,本设计采用窗函数法,分别采用海明窗和凯泽窗设计带通、带阻和低通。 如果所希望的滤波器的理想频率响应函数为)(jw d e H ,如理想的低通,由信号系统的知识知道,在时域系统的冲击响应h d (n)将是无限长的,如图2、图3所示。 H d (w) -w c w c 图2 图3 若时域响应是无限长的,则不可能实现,因此需要对其截断,即设计一个FIR 滤波器频率响应∑-=-=1 0)()(N n jwn jw e n h e H 来逼近)(jw d e H ,即用一个窗函数w(n)来 截断h d (n),如式3所示: )()()(n w n h n h d = (式1)。 最简单的截断方法是矩形窗,实际操作中,直接取h d (n)的主要数据即可。 )(n h 作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数为: ∑-=-=1 0)()(N n jwn jw e n h e H (式2) 令jw e z =,则 ∑-=-=1 0)()(N n n z n h z H (式3), 式中,N 为所选窗函数)(n w 的长度。

设计数字低通滤波器(用matlab实现)

DSP 设计滤波器报告 姓名:张胜男 班级:07级电信(1)班 学号:078319120 一·低通滤波器的设计 (一)实验目的:掌握IIR 数字低通滤波器的设计方法。 (二)实验原理: 1、滤波器的分类 滤波器分两大类:经典滤波器和现代滤波器。 经典滤波器是假定输入信号)(n x 中的有用成分和希望取出的成分各自占有不同的频带。这样,当)(n x 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。 现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。 经典滤波器分为低通、高通、带通、带阻滤波器。每一种又有模拟滤波器(AF )和数字滤波器(DF )。对数字滤波器,又有IIR 滤波器和FIR 滤波器。 IIR DF 的转移函数是: ∑∑=-=-+==N k k k M r r r z a z b z X z Y z H 10 1)()()( FIR DF 的转移函数是: ∑-=-=10)()(N n n z n h z H FIR 滤波器可以对给定的频率特性直接进行设计,而IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。 2、滤波器的技术要求 低通滤波器: p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减 s α:阻带允许的最小衰减 (p α,s α的单位dB ) p Ω:通带上限角频率 s Ω:阻带下限角频率 (s p p T ω=Ω,s s s T ω=Ω)即 C p p F ωπ2=Ω C s s F ωπ2=Ω 3、IIR 数字滤波器的设计步骤:

FIR低通数字滤波器的设计要点

《DSP技术与应用》课程设计报告 课题名称:基于DSP Builder的FIR数字滤波器的设计与实现 学院:电子信息工程学院 班级:11级电信本01班 学号: 姓名:

题目基于DSP Builder的FIR数字滤波器的设计与实现 摘要 FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1、fir2和remez子函数分别实现窗函数法、频率采样法和等波纹逼近法设计FIR滤波器。然后检验滤波器的滤波效果,采用一段音频进行加噪声然后用滤波器滤,对比三段音频效果进而对滤波器的滤波效果进行检验。仿真结果表明,在相频特性上,三种方法设计的FIR滤波器在通带内都具有线性相位;在幅频特性上,相比窗函数法和频率采样法,等波纹逼近法设计FIR滤波器的边界频率精确,通带和阻带衰减控制。

Abstract FIR digital filter is an important part of digital signal processing, the FIR digital filter with linear phase, so it has been widely applied in the collection and processing of information in the course of. This paper introduces the concept of FIR digital filter with linear phase conditions, analysis of the window function method and frequency sampling method and the ripple approximation method of FIR filter design ideas and processes. Based on analyzing the principle of three kinds of design methods, by means of fir1, fir2 and Remez function of Matlab simulation software in the Toolbox window function method and frequency sampling method and respectively realize equiripple approximation method to design FIR filter. Then test the filtering effect of the filter, using an audio add noise and then filter, test three audio effects and comparison of filter filtering effect. Simulation results show that the phase frequency characteristic, three design methods of FIR filter with linear phase are in the pass band; the amplitude frequency characteristics, compared with the window function method and frequency sampling method, equiripple approximation method Design of FIR filter with accurate boundary frequency, the passband and stopband attenuation control.

Matlab在滤波器中的应用

MATLAB大作业 院(系):信息工程学院 专业:09通信工程 班级:通信一班 学生:钟锦慧 学号:20090610080118 指导教师:邹丹 2011年12月18日

MATLAB在滤波器设计中的应用 1. 绪论 从20世纪初至今,在通信与电子系统中,滤波器的研究和应用经历了漫长、艰辛而曲折的道路,滤波器在信号传输与信号处理中的重要地位和作用已经非常明显,所以滤波器的分析与设计更是应该重点研究的问题。滤波器,顾名思义,是对波进行过滤的器件。“波”是一个非常广泛的物理概念,在电子技术领域,“波”被狭义地局限于特指描述各种物理量的取值随时间起伏变化的过程。该过程通过各类传感器的作用,被转换为电压或电流的时间函数,称之为各种物理量的时间波形,或者称之为信号。因为自变量时间是连续取值的,所以称之为连续时间信号,又习惯地称之为模拟信号(Analog Signal)。随着数字式电子计算机(一般简称计算机)技术的产生和飞速发展,为了便于计算机对信号进行处理,产生了在抽样定理指导下将连续时间信号变换成离散时间信号的完整的理论和方法。也就是说,可以只用原模拟信号在一系列离散时间坐标点上的样本值表达原始信号而不丢失任何信息,波、波形、信号这些概念既然表达的是客观世界中各种物理量的变化,自然就是现代社会赖以生存的各种信息的载体。信息需要传播,靠的就是波形信号的传递。信号在它的产生、转换、传输的每一个环节都可能由于环境和干扰的存在而畸变,有时,甚至是在相当多的情况下,这种畸变还很严重,以致于信号及其所携带的信息被深深地埋在噪声当中了[。 2. MATLAB简介 2.1 MATLAB的概述 20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MA TLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MA TLAB推向市场。到20世纪90年代,MA TLAB已成为国际控制界的标准计算软件。 MA TLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MA TLAB和Simulink两大部分。 MA TLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测

利用MATLAB窗函数法设计一个可实现的FIR低通滤波器。

一、实验目的 1.掌握在MATLAB中窗函数的使用方法,了解不同窗函数之间的差别。 2.使用窗函数法设计一个可实现的FIR低通滤波器。 3.观察在相同长度下,不同的窗函数设计出来的滤波器有什么差别。 4.观察同一个窗在不同长度下设计出来的滤波器有什么差别。 二、实验条件 PC机,MATLAB7.0 三、实验内容 1)通过help查找窗函数在MATLAB中如何实现

通过example了解MATLAB中窗函数的实现,并且利用矩形窗,汉宁窗,哈明窗,布莱克曼窗和凯塞窗来进行接下来的实验。 2)设计物理可实现的低通滤波器 设计思路:因为要设计FIR有限脉冲响应滤波器,通常的理想滤波器的单位脉冲响应h是无限长的,所以需要通过窗来截断它,从而变成可实现的低通滤波器。程序如下:clc;clear all; omga_d=pi/5; omga=0:pi/30:pi; for N=3:4:51; w1= window(@blackman,N); w2 = window(@hamming,N); w3= window(@kaiser,N,2.5); w4= window(@hann,N); w5 = window(@rectwin,N); M=floor(N/2); subplot(311);plot(-M:M,[w1,w2,w3,w4,w5]); axis([-M M 0 1]); legend('Blackman','Hamming','kaiser','hann','rectwin'); n=1:M; hd=sin(n*omga_d)./(n*omga_d)*omga_d/pi; hd=[fliplr(hd),1/omga_d,hd]; h_d1=hd.*w1';h_d2=hd.*w2';h_d3=hd.*w3';h_d4=hd.*w4';h_d5=hd.*w5'; m=1:M; H_d1=2*cos(omga'*m)*h_d1(M+2:N)'+h_d1(M+1); H_d2=2*cos(omga'*m)*h_d2(M+2:N)'+h_d2(M+1); H_d3=2*cos(omga'*m)*h_d3(M+2:N)'+h_d3(M+1); H_d4=2*cos(omga'*m)*h_d4(M+2:N)'+h_d4(M+1); H_d5=2*cos(omga'*m)*h_d5(M+2:N)'+h_d5(M+1); subplot(312);plot(omga,[H_d1,H_d2,H_d3,H_d4,H_d5]); legend('Blackman','Hamming','kaiser','hann','rectwin'); subplot(313);plot(abs([fft(h_d1);fft(h_d2);fft(h_d3);fft(h_d4);fft(h_d5)] )'); pause(); end 程序分析: 整个对称窗的长度为N,然而为了在MATLAB中看到窗函数在负值时的形状需将N 变为它的一半,即为2M+1个长度。窗长设置为从3开始以4为间隔一直跳动51。则长度相同的不同窗函数在时域[-M,M]的形状如第一个图所示。 对窗函数进行傅里叶变换时,将零点跳过去先构造一个一半的理想滤波器的脉冲响应hd,再将零点位置求导得出的数赋值进去。将生成的hd左右颠倒形成了一个理想的滤波器的脉冲响应。将构造的理想滤波器的脉冲响应依次与之前定义的窗函数相乘,相乘出来的为列向量,用转置将其变成行向量,形成的h_d就是非理想的低通滤波器的脉冲响应序列。因为h_d为对称奇数长度序列,它的DTFT可以是二倍的离散余弦变化,而零点的位置则直接带入求出,两者相加则是H_d。 则第二个图表示的是五个矩阵向量在频域的变化,而第三个图表示的是五个非理想低

高通滤波器matlab程序代码

%高斯低通滤波器 RGB=imread('132.jpg'); I0=rgb2gray(RGB); subplot(2,3,1),imshow(I0);title('原图'); I1=imnoise(I0,'gaussian');%对原图像加噪声 subplot(2,3,2),imshow(I1);title('加入噪声后') %将灰度图像的二维不连续Fourier变换的零频率成分移到频谱的中心 s=fftshift(fft2(I1)); subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift'); [M,N]=size(s);%分别返回s的行数到M中,列数到N中 %GLPF滤波 d0=50;%初始化d0 n1=floor(M/2);%对M/2进行取整 n2=floor(N/2);%对N/2进行取整 for i=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离 h(i,j)=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数

s(i,j)=h(i,j)*s(i,j);%GLPF滤波后的频域表示 end end s=ifftshift(s);%对s进行反FFT移动 %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数 s=uint8(real(ifft2(s))); subplot(2,3,4),imshow(h);title('传递函数');%显示GHPF滤波器的传递函数 subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)');%显示GLPF滤波处理后的图像

matlab设计低通滤波器

个matlab程序怎么编?(设计低通滤波器) 通带边缘频率10khz 阻带边缘频率22khz 阻带衰减75db 采样频率50khz 要求设计这个低通滤波器 画出脉冲响应的图形 还有滤波器的形状 具体程序怎么编? 谢谢各位大虾的指点!!! 最佳答案 1.1 实验目的 1.了解数字信号处理系统的一般构成; 2.掌握奈奎斯特抽样定理。 1.2 实验仪器 1.YBLD智能综合信号源测试仪1台 2.双踪示波器1台 3.MCOM-TG305数字信号处理与现代通信技术实验箱1台 4.PC机(装有MATLAB、MCOM-TG305配套实验软件)1台 1.3 实验原理 一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。 A/D转换包括三个紧密相关的过程,即抽样、量化和编码。A/D转换中需解决的以下几个重要问题:抽样后输出信号中还有没有原始信号的信息?如果有能不能把它取出来?抽样频率应该如何选择?

奈奎斯特抽样定理(即低通信号的均匀抽样定理)告诉我们,一个频带限制在0至fx以内的低通信号x(t),如果以fs≥2fx的抽样速率进行均匀抽样,则x(t)可以由抽样后的信号xs(t)完全地确定,即xs(t)包含有x(t)的成分,可以通过适当的低通滤波器不失真地恢复出x(t)。最小抽样速率fs=2fx称为奈奎斯特速率。 低通 译码 编码 量化 抽样 输入信号样点输出滤波输出 A/D(模数转换)D/A(数模转换) 图1 低通采样定理演示 为方便实现,实验中更换了一种表现形式,即抽样频率固定(10KHz),通过改变输入模拟信号的频率来展示低通抽样定理。我们可以通过研究抽样频率和模拟信号最高频率分量的频率之间的关系,来验证低通抽样定理。 1.4 实验内容 1.软件仿真实验:编写并调试MATLAB程序,分析有关参数,记录有关波形。 2.硬件实验:输入不同频率的正弦信号,观察采样时钟波形、输入信号波形、样点输出波形和滤波输出波形。 1.5 MATLAB参考程序和仿真内容 %*******************************************************************% %f—余弦信号的频率

(整理)各类滤波器的MATLAB程序清单.

各类滤波器的MATLAB程序 一、理想低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r>0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=ifft2(Ya); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 二、理想高通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r<0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya);

Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 三、B utterworth低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); D=0.3; r=f1.^2+f2.^2; n=4; for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=1/(t^n+1); end end Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');

c语言写的fir低通滤波器

根据fir滤波器的公式y(n)=∑h(m)x(n-m);(m: 0~(N-1)).利用MATLAB产生滤波器系数(h(n))并归一化,下面为一个LP滤波算法 void filter(void) { uint16 i,j; fp32 sum; int16 x1[2030]; fp32 h[19]={ -0.0027, -0.0025, 0.0050, 0.0157, -0.0000, -0.0471, -0.0482, 0.0838, 0.2953, 0.4013, 0.2953, 0.0838, -0.0482, -0.0471, -0.0000,0.0157, 0.0050, -0.0025, -0.0027}; for(i=0;i<2020;i++) x1[i] = data0[i]; for(i=0;i<2020;i++) { sum=0.0; for(j=0;j<19;j++) { if(i >= j) sum+=h[j]*x1[i-j]; else ; } data0[i]=(int16)sum; } for(i=0;i<2000;i++) { data0[i] = data0[i+20]; } } 考虑到前19个点为不完全累加和,故抛去前19个点。(应该是前后各18个点都是不完全累加和,都应该去掉,对于数据分段进入滤波器的情况,应该把前一段的后面数据放到下一段的前面,这段时间我在解调FSK时遇到了这个问题,通过滤波器的数据的分段处理。) 设输入数据x[N],输出数据y[N],滤波器系数h[n] 1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1)); void fir(short x[], short h[], short y[]) { int i,j; long long sum; for (j = 0; j < N; j++) { sum = 0; for (i = 0; i < n; i++) sum += x[j-i] * h[i]; y[j] = sum >> 15; } } 乘法器使用次数:N*n 2.逆推法: void fir(short x[], short h[], short y[])

matlab实现滤波器

虽然matlab提供了很多产生低通滤波器的函数,而且也提供了将低通转换为高通、带通等滤波器的方法函数,以及数字化的函数。但是为了简化设计及设计者方便考虑,matlab还提供了更为简便的产生各种滤波器的方法。 1 besself 功能:贝塞尔(Bessel)模拟滤波器设计。 格式:[b,a] = besself(n,Wn) [b,a] = besself(n,Wn,'ftype') [z,p,k] = besself(...) [A,B,C,D] = besself(...) 说明:besself函数可以设计模拟低通、高通、带通和带阻贝塞尔(Bessel)滤波器。 [b,a] = besself(n,Wn)返回截止频率为Wn(单位为弧度/秒)的n阶贝塞尔模拟 低通滤波器,b、a分别为滤波器传递函数的分子和分母系数向量(降幂排列)。 当Wn为二元向量,即Wn=[W1 W2] (W1

2 butter 功能:巴特沃思(Butterworth)模拟/数字滤波器设计。 格式:[b,a] = butter(n,Wn) [b,a] = butter(n,Wn,'ftype') [b,a] = butter(n,Wn,'s') [b,a] = butter(n,Wn,'ftype','s') [z,p,k] = butter(...) [A,B,C,D] = butter(...) 说明:butter函数可以设计模拟或数字的低通、高通、带通和带阻Butterworth 滤波 器。Butterworth滤波器可以使通带内的幅频响应最大程度地平坦,但这也使 得它的通带到阻带的过渡过程较慢。在这方面Chebyshev滤波器和椭圆滤波 器性能较好。 在设计数字滤波器时,butter函数中的参数Wn与besself函数有很大的区别, 它是一个相对量,其定义区间为Wn∈[0,1],其中1对应于0.5fs,fs为采样 频率(单位Hz);在设计模拟滤波器时,Wn采用真实频率,单位为Hz。 [b,a] = butter(n,Wn)返回截止频率为Wn(单位为弧度/秒)的n阶Butterworth 数字低通滤波器,b、a分别为滤波器传递函数的分子和分母系数向量(降幂 排列)。 当Wn为二元向量,即Wn = [W1 W2] (W1

相关文档
相关文档 最新文档