搜档网
当前位置:搜档网 › 滤波器设计与信号处理的matlab实现(2014年12月)

滤波器设计与信号处理的matlab实现(2014年12月)

滤波器设计与信号处理的matlab实现(2014年12月)
滤波器设计与信号处理的matlab实现(2014年12月)

滤波器设计与信号处理的MATLAB 实现

庞 勇 2014年12月

1. IIR 滤波器设计和MATLAB 实现

1.1 IIR 滤波器设计原理

对于IIR 滤波器设计,我们主要学习的是由模拟滤波器设计数字滤波器的方法,设计思路和流程如图:

目的满足

先设计

基于第3步由模拟滤波器向数字滤波器的转化方式,IIR 滤波器设计方法分为“脉冲响应不变法”和“双线性变换法”,由于“脉冲响应不变法”存在混叠误差的缺陷,因此一般我们多选“双线性变换法”,而对于第2步模拟滤波器的设计,我们主要学习的是巴特沃斯设计方法,因此这里以“巴特沃斯滤波器双线性变换”设计法为例来阐述IIR 滤波器的设计方法和matlab 实现。

“巴特沃斯滤波器双线性变换”设计法的设计流程:

终始DF 指标

DF

()

c H s ()

d H z 11

211z s T z ---=

+

原理解释:

δ1δ-1+δ

222p

T

tg 1-1+2

s T

2

2()

c H j Ω2p

T ω

2

δ1

1δ-1

1+δ2

s T

ω(d p ωs

ω0

δ1δ-1

1+π

其中巴特沃斯模拟滤波器设计流程为:

1+2

δ1δ-δH 得两点代入()j ΩN

Ωj A 点代入

()H Ω得c H(s)H(-s)极点分布:共2N 个共圆c

Ω等角距N π

1.2 “巴特沃斯滤波器双线性变换”设计法的matlab 实现:

按照设计原理和流程,每一步都可以在matlab 里进行编程计算,因此完全可以编程实现从技术指标到系统函数的整个计算,并且matlab 的信号处理工具箱已经把这整个计算过程编成函数供人们直接调用,我们只要了解这个函数的使用方法就可以了。

下面两个函数的联用就由技术指标计算出系统函数:

[N,Wn]=buttord(wp,ws,rp,rs); [b,a]=butter(N,Wn);

函数“buttord ”由技术指标计算出巴特沃斯滤波器的阶数和3dB 截止频率。其中“wp,ws,rp,rs ” 分别表示通带截止频率,阻带截止频率,通带衰减和阻带衰减;“N,Wn ” 分别表示巴特沃斯滤波器阶数和3dB 截止频率。

注意:wp,ws 要求用归一化频率,即把0-pi ,归为0-1;rp,rs 用dB 数表示;Wn 指的是,模拟巴特沃斯滤波器经双线性变换成数字滤波器时的3dB 截止频率,且是归一化表示。

函数“butter ”由巴特沃斯滤波器阶数和3dB 截止频率计算出系统函数。其中“b,a ”表示系统函数的系数序列。我们知道数字滤波器系统函数一般形式

为: ()1201212012M

M N

N b b z b z b z H z a a z a z a z ------++++=++++,“b,a ”就分别是系数序列

[]0

12

M b b b b 和[]0

12

N a a a a 。

例:设计一个满足以下技术指标的数字滤波器:

0.1

0.9

通阻带截止频率分别为0.3π和0.7π,归一化表示就是:0.3p ω=和0.7s ω=。通阻带衰减的dB 表示分别为()1

20lg 0.9151dB 0.9

p r ==和()120lg 20dB 0.1s r == 编程:

wp=0.3;ws=0.7;rp=0.9151;rs=20; [N,Wn]=buttord(wp,ws,rp,rs); [b,a]=butter(N,Wn);

返回:

b = 0.1447 0.4342 0.4342 0.1447 a = 1.0000 -0.1677 0.3408 -0.0153 于是设计出数字滤波器:

()123

123

0.14470.43420.43420.144710.16770.34080.0153z z z H z z z z ------+++=-+-

上述设计原理和方法是以低通滤波器为例来说明,如果要设计高通、带通、带阻等其它类型滤波器,只需要由低通滤波器进行转换而来,下面进行详细介绍。

1.3IIR各类滤波器设计原理和MATLAB实现

IIR各类数字滤波器设计原理如图所示:

在matlab里,整个设计计算过程由同样两个函数的联用来实现:

[N,Wn]=buttord(wp,ws,rp,rs);

[b,a]=butter(N,Wn,‘*’);

其中“wp,ws,rp,rs”可以表示各类数字滤波器技术指标:

对于低通就有wpws ;

对于带通就有wp=[wp1, wp2],ws=[ws1, ws2],且ws1

对于带阻就有wp=[wp1, wp2],ws=[ws1, ws2],且wp1

函数“butter”可以设计各类滤波器:

[b,a]=butter(N,Wn),若Wn为一数值,则设计低通滤波器;

若Wn为一向量wn=[wn1, wn2],则设计带通滤波器;

[b,a]=butter(N,Wn,‘high’),且wn为一数值,设计高通滤波器;

[b,a]=butter(N,Wn,‘stop’),且wn=[wn1, wn2],设计带阻滤波器。

1.4 系统滤波特性的显示

对于滤波器,必须要看到它的频响函数()j H e ω或幅度函数()j H e ω,才能直观了解它的滤波特性,才能检验设计是否正确,Matlab 函数“freqz ”用来完成这个任务。这里有两种用法:

用法一:

freqz(b,a)

“b,a ”表示系统函数的系数序列,程序运行这一句时会弹出一个图形窗口,输出这一系统的幅度函数()j H e ω(dB 表示)和相位函数()j H e ω。

用法二:

[H,W]=freqz(b,a);

这条语句不会输出图形,而是返回频响函数()j H e ω,“H,W ”分别表示函数值和自变量,“W ”是从0到pi 的一个序列。为了画出()j H e ω,需要再写绘图语句,如:

figure(1);plot(W,abs(H)); figure(2);plot(W,angle(H));

1.5用滤波器来处理信号

怎样用设计好的滤波器来处理信号?理论上是利用这些关系:

()()()y n h n x n =*

()()()j j j Y e H e X e ωωω=

()()()Y z H z X z =

Matlab 里对应有三种方法,这里利用系统函数来计算输出比较方便:

y=filter(b,a,x);

“b,a ”表示系统函数的系数序列,“x ”表示待处理的信号,“y ”就是处理结果。注意:“y ”是理论上输出序列的截取,截取了与“x ”相同序号的一段,“y ”与 “x ” 具有相同长度。

2. FIR 滤波器设计和MATLAB 实现

2.1 窗函数设计法原理

对于FIR 滤波器设计,我们比较详细地介绍了窗函数设计法,设计思想如图所示:

()

j H e ωp ωs

ωω

ππ

-p ωs

ωω

ππ

-()

j d H e ω0

n

()()sin c d n h n n

ωπ=N -n

1

12

-1

2N -w (n )

-N 0

n

1

2N -12

-h (n )

近似

即:理想滤波器脉冲响应的加窗截断就是理想滤波器的近似实现。

2.2

窗函数设计法的Matlab 实现方法 1. 窗函数的生成

Matlab 提供了一系列程序来生成常用窗函数:

w=boxcar(M)

w=triang(M) w=hann(M) w=hamming(M) w=blackman(M)

它们分别生成矩形窗、三角窗、汉宁窗、海明窗和布莱克曼窗,窗口宽度M 点.

2. 理想滤波器脉冲响应的Matlab 计算

理想滤波器脉冲响应可以自己编程计算,由于需要反复使用,可以写成函数方便调用,如:

function hi=IdealLp(wc,M) m=0:M-1; M0=(M-1)/2; n=m-M0;

hi=sin(wc*n)./(pi*n); hi(find(n==0))=wc/pi; end

2.3窗函数设计法的Matlab编程实例

下面的程序用窗函数设计法设计了一个截止频率在0.3pi,窗口宽度为81点的FIR低通滤波器。主程序名为:example1.m,调用了自编函数:

hi=IdealLp(wc,M)。

关于自编函数应注意:

(1)函数名应与文件名一致;

(2)函数应与调用它的程序放在同一路径下;

(3)函数调用方法是在程序里写hi=IdealLp(wc,M),其中传入参数(wc,M)应都已被赋值,程序运行结果将返回hi。

程序example1.m的运行结果如下:

由图可见所设计滤波器阻带衰减接近50dB 。 2.4用滤波器来处理信号

根据线性时不变系统输入输出关系有:

()()()y n h n x n =*

Matlab 里“conv ”函数可以实现卷积计算:

y=conv(h,x);

函数conv 计算两序列“x ”和“h ”的卷积和,计算结果赋给变量“y ”。 应当注意:这里的序列是没有自变量的,为了正确表示和绘出信号,必须赋给它们正确的自变量。

3. 用滤波器处理信号的Matlab 方法总结

用滤波器来处理信号,理论上可以利用这三个关系式:

()()()y n h n x n =*

()()()j j j Y e H e X e ωωω=

()()()Y z H z X z =

Matlab 里对应有三种方法,依次详细说明并举例: 3.1 方法一:用函数“conv ”进行卷积计算:

y=conv(h,x);

这里为了给序列y赋上正确的坐标,需要搞清楚y的坐标与h和x坐标的关系。根据理论分析可以知道:若将三序列长度分别记为Nh、Nx和Ny,三序列起点坐标分别记为Sh、Sx和Sy,三序列终点坐标分别记为Eh、Ex和Ey,则:

Ny = Nh + Nx - 1

Sy = Sh + Sx

Ey = Eh + Ex

根据这些关系可以给序列y赋上正确的坐标。

实例:

程序运行结果:

3.2 方法二:用函数“fft ”通过DFT 计算卷积:

若将三序列长度分别记为Nh 、Nx 和Ny ,则有:

Ny = Nh + Nx - 1

为计算序列x 和h 卷积和,先取L>= Nh + Nx – 1的一个值,然后算法如下:

H=fft(h,L ); X=fft(x,L ); Y=H.*X; y=ifft(Y,L ); y=real(Y);

算法解释:

如图所示:

()

j X e ωω

π

X

2L

π()

j H e ω0

ω

π

π

H

2L

π()

j Y e ω0

ω

π

Y

2L

π()()()

y n x n h n =*N x

N h

N y= N x+ N h-1

()

x n ()

h n ()

y n 由于:()()()y n h n x n =*,因此:()()()j j j Y e H e X e ωωω=

若记()j H e ω、()j X e ω和()j Y e ω的M 点等间隔样本序列分别为:H 、X 和Y ,即:

()

()201j k

L

H H e k L ωπω==≤≤-

()

()201j k

L

X X e k L ωπω==≤≤-

()

()201j k

L

Y Y e k L ωπω==≤≤-

则必有:

Y=HX

又注意到,序列y(n)长为: Ny = Nh + Nx-1, 当样本点数 L >= y(n)长度 Ny 时,Y 就是y 的L 点DFT , 同时,H 就是h 的L 点DFT ,X 就是x 的L 点DFT 。

因此用x 和h 的L 点DFT 的乘积取反变换可以得到x 和h 卷积。算法正确。

注意:如果样本点数 L< y(n)长度 Ny , Y 就不是y 的L 点DFT ,用这个算法计算x 和h 的线性卷积是错误的。

事实上,这个算法计算出的永远都是x 和h 的L 点循环卷积。这样可以发现: 当样本点数 L >= y(n)长度 Ny 时,循环卷积与线性卷积相等, 而当样本点数 L < y(n)长度 Ny 时, 循环卷积与线性卷积不等,

这与在循环卷积计算中的发现是一样的。

实例:已知序列

计算x 和h 的线性卷积和N=15、17、19、21、23点的循环卷积。

分析,按照dft 理论,用前述算法计算出的就是循环卷积,而当点数 L >= Nh + Nx-1时,循环卷积也是线性卷积。

()()

()()

1,0111,

011x n n h n n =≤≤???=≤≤??

程序运行结果:

结果表明,点数大到足够大以后,循环卷积与线性卷积相同,验证了理论分析。

3.3 方法三: 利用系统函数来计算滤波器的输出序列:

y=filter(b,a,x);

“b,a”表示系统函数的系数序列,“x”表示待处理的信号,“y”就是该系统对“x”进行滤波处理的结果,但要注意:“y”是理论上输出序列的截取,截取了与“x”相同序号的一段,“y”与具有相同长度。

(实例略)

滤波器设计步骤及实现程序

数字滤波器的设计步骤及程序实现 湖南理工学院信息与通信工程学院 一、IIR 脉冲响应不变法设计步骤 1、已知实际数字指标as s ap p ,,,ωω 2、将数字指标化为原型模拟指标As s Ap p ,,,ΩΩ,可设T=pi, T /ω=Ω 3、求原型模拟滤波器的c N Ω,,其中:??? ???ΩΩ--=)/lg(2)]110/()110lg[(10/10/s p A A s p N N A p cp p 210 /1 10 -Ω= Ω N A s cs s 210 /1 10 -Ω= Ω ][cs cp c ΩΩ∈Ω, 4、根据N 写出归一化原型系统函数)(p G a 5、用c s p Ω=/代入得原型系统函数c s p a a p G s H Ω==/)()( 6、将)(s H a 化为部分分式展开形式∑-=k k a s s A s H )( 7、写出)(z H 的极点T s k k e z =,并写出)(z H 的部分分式展开形式∑--?= 11)(z z A T z H k k 8、将)(z H 化为分子分母形式,验证设计结果。 二、IIR 双线性变换法设计步骤 1、已知实际数字指标as s ap p ,,,ωω 2、将数字指标化为原型模拟指标As s Ap p ,,,ΩΩ,可设T=2, 2 tan 2ω?= ΩT 3、求原型模拟滤波器的c N Ω,,其中:?? ? ???ΩΩ--=)/lg(2)]110/()110lg[(10/10/s p A A s p N N A p cp p 210 /1 10 -Ω= Ω N A s cs s 210 /1 10 -Ω= Ω ][cs cp c ΩΩ∈Ω, 4、根据N 写出归一化原型系统函数)(p G a 5、用c s p Ω=/代入得原型系统函数c s p a a p G s H Ω==/) ()( 6、用11 112--+-?=Z Z T s 代入原型系统函数)(s H a 得1 1 112)()(--+-? ==Z Z T s a s H z H 8、将)(z H 整理成分子分母形式,验证设计结果。

几个分形的matlab实现

几个分形得matlab实现 摘要:给出几个分形得实例,并用matlab编程实现方便更好得理解分形,欣赏其带来得数学美感 关键字:Koch曲线实验图像 一、问题描述: 从一条直线段开始,将线段中间得三分之一部分用一个等边三角形得两边代替,形成山丘形图形如下 ?图1 在新得图形中,又将图中每一直线段中间得三分之一部分都用一个等边三角形得两条边代替,再次形成新得图形如此迭代,形成Koch分形曲线。 二、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)得过程。图1中,设与分别为原始直线段得两个端点,现需要在直线段得中间依次插入三个点,,。显然位于线段三分之一处,位于线段三分 之二处,点得位置可瞧成就是由点以点为轴心,逆时针旋转600而得。旋转由正交矩阵 实现。 算法根据初始数据(与点得坐标),产生图1中5个结点得坐标、结点得坐标数组形成一个矩阵,矩阵得第一行为得坐标,第二行为得坐标……,第五行为得坐标。矩阵得第一列元素分别为5个结点得坐标,第二列元素分别为5个结点得坐标。 进一步考虑Koch曲线形成过程中结点数目得变化规律。设第次迭代产生得结点数为,第次迭代产生得结点数为,则与中间得递推关系为。 三、实验程序及注释: p=[0 0;10 0]; %P为初始两个点得坐标,第一列为x坐标,第二列为y坐标 n=2; %n为结点数 A=[cos(pi/3) —sin(pi/3);sin(pi/3) cos(pi/3)]; %旋转矩阵 for k=1:4 d=diff(p)/3; %diff计算相邻两个点得坐标之差,得到相邻两点确定得向量 %则d就计算出每个向量长度得三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n—1,:); %以原点为起点,前n—1个点得坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上得点得坐标为迭代前得相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上得点得坐标 p(3:4:m,:)=q+d+d*A'; %用向量方法计算迭代后处于4k+3位置上得点得坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k位置上得点得坐标 n=m; %迭代后新得结点数目 end plot(p(:,1),p(:,2)) %绘出每相邻两个点得连线 axis([0 10 0 10]) 四、实验数据记录: 由第三部分得程序,可得到如下得Koch分形曲线:

数字信号处理滤波器的设计

《数字信号处理》课程设计报告 设计课题滤波器设计与实现 专业班级电信1101班 姓名 学号 201105 报告日期2013年12月

《数字信号处理》 课程设计任务书 题目滤波器设计与实现 学生姓名甘源滢学号201105020103 专业班级电信1101班 设计内容与要求一、设计内容: 设计一个模拟低通巴特沃斯滤波器,技术指标:通带截止频率1000rad,通带最大衰减1dB;阻带起始频率5000rad,阻带最小衰减30dB,画出其幅度谱和相位谱。 二、设计要求 1 设计报告一律按照规定的格式,使用A4纸,格式、封面统一给出模版。 2 报告内容 (1)设计题目及要求 (2)设计原理(包括工作原理、涉及到的matlab函数的说明) (3)设计内容(设计思路,设计流程、仿真结果) (4)设计总结(收获和体会) (5)参考文献 (6)程序清单 起止时间2013年12 月16日至2013年12月23 日指导教师签名2013年12月10日系(教研室)主任签名2013年12 月12 日学生签名2013年12月13日

目录 1课题描述 (1) 1.1报告介绍 (1) 2设计原理 (2) 2.1巴特沃斯低通模拟滤波器的设计原理 (2) 2.2低通巴特沃斯滤波器的设计步骤如下 (3) 2.3函数说明 (3) 2.3.1buttord函数 (3) 2.3.2butter函数 (4) 2.4模拟低通滤波器的性能指标 (4) 3设计内容 (5) 3.1MATLAB简介 (5) 3.2巴特沃斯滤波器的设计步骤 (6) 3.3对巴特沃斯低通模拟滤波器的仿真 (6) 4实验结果分析 (7) 5实验心得体会 (7) 6程序清单 (8) 7参考文献 (9) 1.课题描述 1.1报告介绍 模拟滤波器的理论和设计方法已经发展的相当成熟,且有多种典型的滤波器供我们选择,如巴特沃斯(butterworth)滤波器,切比雪夫(chebyshev)滤波器,椭圆(ellipse)滤波器,贝塞尔(bessel)滤波器等。这些滤波器都有着严格的设计公式,现成的曲线和图表供设计人员使用,而且所设计的系统函数都满足电路实现条件。这些典型的滤波器各有特点:巴特沃斯滤波器具有单调下降到幅频特性;切比雪夫滤波器的幅频特性在带通或者阻带有等波纹特性,可以提高选择性;贝塞尔滤波器通带内有较好的线性相位特性;椭圆滤波器的选择性相对前三种是

数字信号处理-低通滤波器设计实验

实验报告 课程名称:数字信号处理 实验名称:低通滤波器设计实验 院(系): 专业班级: 姓名: 学号: 指导教师: 一、实验目的: 掌握IIR数字低通滤波器的设计方法。 二、实验原理: 2.1设计巴特沃斯IIR滤波器 在MATLAB下,设计巴特沃斯IIR滤波器可使用butter 函数。 Butter函数可设计低通、高通、带通和带阻的数字和模拟IIR滤波器,其特性为使通带内的幅度响应最大限度地平坦,但同时损失截止频率处的下降斜度。在期望通带平滑的情况下,可使用butter函数。butter函数的用法为:

[b,a]=butter(n,Wn)其中n代表滤波器阶数,W n代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。buttord函数的用法为:[n,Wn]= buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。 2.2契比雪夫I型IIR滤波器。 在MATLAB下可使用cheby1函数设计出契比雪夫I 型IIR滤波器。 cheby1函数可设计低通、高通、带通和带阻契比雪夫I 型滤IIR波器,其通带内为等波纹,阻带内为单调。契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。cheby1函数的用法为:[b,a]=cheby1(n,Rp,Wn,/ftype/)在使用cheby1函数设计IIR滤波器之前,可使用cheblord 函数求出滤波器阶数n和截止频率Wn。cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I型滤波器的最小阶和截止频率Wn。cheblord函数的用法为: [n,Wn]=cheblord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。 三、实验要求: 利用Matlab设计一个数字低通滤波器,指标要求如下:

matlab滤波器设计

长安大学 数字信号处理综合设 计 专业_______电子信息工程_______ 班级__24030602___________ 姓名_______张舒_______ 学号2403060203 指导教师陈玲 日期_______2008-12-27________

一、课程设计目的: 1. 进一步理解数字信号处理的基本概念、基本理论和基本方法; 2.熟悉在Windows环境下语音信号采集的方法; 3.学会用MATLAB软件对信号进行分析和处理; 4.综合运用数字信号处理理论知识,掌握用MATLAB软件设计FIR和IIR数字滤波器的方法; 5. 提高依据所学知识及查阅的课外资料来分析问题解决问题的能力。 二、课程设计内容: 1.语音信号的采集 利用windows下的录音机录制一段自己的话音,时间控制在1秒左右;并对语音信号进行采样,理解采样频率、采样位数等概念。 2.语音信号的频谱分析 利用函数fft对采样后语音信号进行快速傅里叶变换,得到信号的频谱特性。 3.设计数字滤波器 采用窗函数法和双线性变换法设计下列要求的三种滤波器,根据语音信号的特点给出有关滤波器的性能指标: 1)低通滤波器性能指标,fp=1000Hz,fc=1200Hz, As=100dB,Ap=1dB; 2)高通滤波器性能指标,fc=4800Hz,fp=5000Hz ,As=100dB,Ap=1dB; 3)带通滤波器性能指标,fp1=1200Hz,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。 4.对语音信号进行滤波 比较用两种方法设计的各滤波器的性能,然后用性能好的滤波器分别对采集的语音信号进行滤波;并比较滤波前后语音信号的波形及频谱,分析信号的变化。 5.回放语音信号,感觉滤波前后的声音变化。 三、实验原理 (一)基于双线性Z变换法的IIR数字滤波器设计 由于的频率映射关系是根据推导的,所以使jΩ轴每隔2π/Ts便映射到单位圆上一周,利用冲激响应不变法设计数字滤波器时可能会导致上述的频域混叠现象。为了克服这一问题,需要找到由s平面到z平面的另外的映射关系,这种关系应保证: 1) s平面的整个jΩ轴仅映射为z平面单位圆上的一周; 2) 若G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的; 3) 这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得到G(s); 4) 如果G(j0)=1,那么。 双线性Z变换满足以上4个条件的映射关系,其变换公式为

IIR数字滤波器的设计流程图讲课讲稿

目录 目录 0 前言 (1) 1.1数字滤波器简介 (1) 1.2使用数字滤波器的原因 (1) 1.3设计的原理和内容 (1) 工程概况 (2) 正文 (2) 3.1 设计的目的和意义 (2) 3.2 目标和总体方案 (2) 3.3 设计方法和内容 (3) 3.4 硬件环境 (3) 3.5软件环境 (3) 3.6IIR数字滤波器设计思路 (3) 3.7 IIR数字滤波器的设计流程图 (3) 3.8 IIR数字滤波器设计思路 (4) 3.9设计IIR数字滤波器的两种方法 (4) 3.10双线性变换法的基本原理 (5) 3.11用双线性变换法设计IIR数字滤波器的步骤 (6) 3.12程序源代码和运行结果 (6) 3.12.1低通滤波器 (6) 3.12.3带通滤波器 (10) 3.12.4带阻滤波器 (13) 3.13结论 (15) 3.13.1存在的问题 (15) 3.13.2解决方案 (16) 致谢 (16)

参考文献 (16) 前言 1.1数字滤波器简介 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。如果系统是一个连续系统,则滤波器称为模拟滤波器。如果系统是一个离散系统,则滤波器称为数字滤波器。 信号通过线性系统后,其输出信号就是输入信号和系统冲激响应的卷积。从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。除非为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分较大的模,因此,中这些频率成分将得到加强,而另外一些频率成分的模很小甚至为零,中这部分频率分量将被削弱或消失。因此,系统的作用相当于对输入信号的频谱进行加权。 1.2使用数字滤波器的原因 数字滤波器具有比模拟滤波器更高的精度,甚至能够实现后者在理论上也无法达到的性能。数字滤波器相比模拟滤波器有更高的信噪比。数字滤波器还具有模拟滤波器不能比拟的可靠性。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。 1.3设计的原理和内容 在windows环境下进行语言信号采集,通过IIR数字滤泼器的设计,数字带滤波器就是用软件来实现上面的滤波过程,可以很好的克服模拟滤波器的缺点,数字带滤波器的参数一旦确定,就不会发生变化。IIR型有较好的通带与阻带特性,所以,在一般的设计中选用IIR 型。IIR型又可以分成Butterworth型滤波器,ChebyshevII型滤波器和椭圆型滤波器等。 IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤: (1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器; (3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器;

Matlab实验报告:分形迭代

数学实验报告:分形迭代 练习1 1.实验目的:绘制分形图案并分析其特点。 2.实验内容:绘制Koch曲线、Sierpinski三角形和树木花草图形,观察这些图形的局部和原来分形图形的关系。 3.实验思路:利用函数反复调用自己来模拟分形构造时的迭代过程,当迭代指标n为0时运行作图操作,否则继续迭代。 4.实验步骤: (1)Koch曲线 function koch(p,q,n) % p、q分别为koch曲线的始末复坐标,n为迭代次数 if (n==0) plot([real(p);real(q)],[imag(p);imag(q)]); hold on; axis equal else a=(2*p+q)/3; % 求出从p 到q 的1/3 处端点a b=(p+2*q)/3; % 求出从p 到q 的2/3 处端点b c=a+(b-a)*exp(pi*i/3);% koch(p, a, n-1); % 对pa 线段做下一回合 koch(a, c, n-1); % 对ac 线段做下一回合 koch(c, b, n-1); % 对cb 线段做下一回合 koch(b, q, n-1); % 对bq 线段做下一回合 end (2)Sierpinski三角形 function sierpinski(a,b,c,n) % a、b、c为三角形顶点,n为迭代次数 if (n==0) fill([real(a) real(b) real(c)],[imag(a) imag(b) imag(c)],'b');% 填充三角形abc hold on; axis equal else a1=(b+c)/2; b1=(a+c)/2; c1=(a+b)/2; sierpinski(a,b1,c1,n-1); sierpinski(a1,b,c1,n-1); sierpinski(a1,b1,c,n-1); end (3)树木花草 function grasstree(p,q,n) % p、q分别为树木花草始末复坐标,n为迭代次数

数字信号处理滤波器

1.设计物理可实现的低通滤波器 设计思路:因为要设计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。则第二个图表示的是五个矩阵向量在频域的变化,而第三个图表示的是五个非理想低通滤波器的傅里叶变换,图三FFT给出的结果永远是对称的,因为它显示

滤波器设计MATLAB

数字信号处理

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

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

数字滤波器设计步骤

数字信号处理 数字滤波器的设计 学院计算机与电子信息学院 专业电子信息科学与技术班级电子15-2 班姓名学号 指导教师刘利民

数字滤波器的设计 一、模拟低通滤波器的设计方法 1、B utterw orth 滤波器设计步骤: ⑴。确定阶次N ① 已知Ωc 、Ωs 和As 求Bu tt er worth DF 阶数N ② 已知Ωc 、Ωs 和Ω=Ωp (3dB p Ω≠-)的衰减A p 求Bu tterwort h DF 阶数N ③ 已知Ωp、Ωs和Ω=Ωp 的衰减A p 和As 求B utte rwo rth DF 阶数N /10 /1022(/)101,(/)101p s A A N N p c s c ΩΩ=-ΩΩ=-则:

⑵.用阶次N 确定 ()a H s 根据公式: 1,2,2N ()()a a H s H s -在左半平面的极点即为()a H s 的极点,因而 2,,N 2、切比雪夫低通滤波器设计步骤: ⑴.确定技术指标p Ω p α s Ω s α 归一化: /1p p p λ=ΩΩ= /s s p λ=ΩΩ ⑵.根据技术指标求出滤波器阶数N 及ε: 0.12 10 1δε=- p δα= ⑶.求出归一化系统函数 其中极点由下式求出:

或者由N 和S直接查表得()a H p 二、数字低通滤波器的设计步骤: 1、 确定数字低通滤波器的技术指标:通带截止频率p ω、通带最大衰减系数 p α、 阻带截止频率ω、阻带最小衰减系数s α。 2、 将数字低通滤波器的技术指标转换成模拟低通滤波器的技术指标。 巴特沃斯: 切比雪夫:/s s p λ=ΩΩ 0.1210 1δ ε=- p δα=

数字信号处理实验一 IIR数字滤波器设计及软件实现

实验一 IIR数字滤波器设计及软件实现 一、实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 二、实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求同学调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 三、实验内容及步骤 (1)调用信号产生函数mstg,产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1-1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。

图1-1 三路调幅信号st 的时域波形和幅频特性曲线 (2)要求将st 中三路调幅信号分离,通过观察st 的幅频特性曲线,分别确定可以分离st 中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB 。 提示:抑制载波单频调幅信号的数学表示式为 0001()cos(2)cos(2)[cos(2())cos(2())]2 c c c s t f t f t f f t f f t ππππ==-++ 其中,cos(2)c f t π称为载波,f c 为载波频率,0cos(2)f t π称为单频调制信号,f 0为调制正弦波信号频率,且满足0c f f >。由上式可见,所谓抑制载波单频调幅信号,就是2个正弦信号相乘,它有2个频率成分:和频0c f f +和差频0c f f -,这2个频率成分关于载波频率f c 对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率f c 对称的2根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图1-1中三路调幅信号的载波频率分别为250Hz 、500Hz 、1000Hz 。如果调制信号m(t)具有带限连续频谱,无直流成分,则()()cos(2)c s t m t f t π=就是一般的抑制载波调幅信号。其频谱图是关于载波频率f c 对称的2个边带(上下边带),在专业课通信原理中称为双边带抑制载波 (DSB-SC) 调幅信号,简称双边带 (DSB) 信号。如果调制信号m(t)有直流成分,则()()cos(2)c s t m t f t π=就是一般的双边带调幅信号。其频谱图是关于载波频率f c 对称的2个边带(上下边带),并包含载频成分。

常见的信号处理滤波方法

低通滤波:又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC 低通滤波器的功能。 适用范围:单个信号,有高频干扰信号。 一阶低通滤波的算法公式为: Y(n)X(n)(1)Y(n 1)αα=+-- 式中: α是滤波系数;X(n)是本次采样值;Y(n 1)-是上次滤波输出值;Y(n)是本次滤波输出值。 滤波效果1: 红色线是滤波前数据(matlab 中生成的正弦波加高斯白噪声信号) 黄色线是滤波后结果。 滤波效果2:

matlab中函数,相当于一阶滤波,蓝色是原始数据(GPS采集到的x(北)方向数据,单位m),红色是滤波结果。 一阶滤波算法的不足: 一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。

互补滤波:适用于两种传感器进行融合的场合。必须是一种传感器高频特性好(动态响应好但有累积误差,比如陀螺仪。),另一传感器低频特性好(动态响应差但是没有累积误差,比如加速度计)。他们在频域上互补,所以进行互补滤波融合可以提高测量精度和系统动态性能。 应用:陀螺仪数据和加速度计数据的融合。 互补滤波的算法公式为: 1122Y(n)X (n)(X (n)Y(n 1))αα+=+-- 式中:1α和2α是滤波系数;1X (n)和2X (n)是本次采样值;Y(n 1)-是上次滤 波输出值;Y(n)是本次滤波输出值。 滤波效果 (测试数据): 蓝色是陀螺仪 信号,红色是加 速度计信号,黄 色是滤波后的 角度。

. 互补滤波实际效果: .

卡尔曼滤波:卡尔曼滤波器是一个“optimal recursive data processing algorithm (最优化自回归数据处理算法)”。对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测。 首先,用于测量的系统必须是线性的。 (k)(k 1)(k)(k)X AX BU w =-++ (k)(k)(k)Z HX v =+ (k)X 是系统k 时刻的状态,(k)U 是系统k 时刻的控制量。(k)Z 是系统k 时 刻的测量值。A 和B 为系统参数,(k)w 和(k)v 分别表示过程和测量的噪声,H 是测量系统参数。 在进行卡尔曼滤波时: 首先进行先验预测: (k 1|k)(k |k)(k)(k)X AX BU w +=++ 计算先验预测方差: '(k 1|k)(k |k)(k)P AP A Q +=+ 计算增益矩阵: (k 1)(k 1|k)'/((k 1|k)'(k 1))Kg P H HP H R +=++++ 后验估计值: (k 1|k 1)(k 1|k)(k 1)(Z(k 1)(k 1|k))X X Kg HX ++=++++-+ 后验预测方差: (k 1|k 1)(1(k 1))(k 1|k)P Kg H P ++=-++ 其中,(k)Q 是系统过程激励噪声协方差,(k)R 是测量噪声协方差。 举例说明: (下文中加粗的是专有名词,需要理解) 预测小车的位置和速度的例子(博客+自己理解):

关于滤波器设计的matlab函数简表

关于滤波器设计、实现的Matlab函数分类函数名功能说明 滤波器分析 (求幅频、相频响应)abs求模值 angle求相角 freqs模拟滤波器的频率响应freqz数字滤波器的频率响应grpdelay群延迟 impz脉冲响应(离散的)zplane画出零极点图 fvtool滤波器可视化工具 滤波器实现(求输入信号通过滤波器的响应)conv/conv2卷积/二维卷积 filter求信号通过滤波器的响应 IIR滤波器阶数估算buttord巴特沃斯滤波器阶数估算 cheb1ord切比雪夫Ⅰ型滤波器阶数估算 cheb2ord切比雪夫Ⅱ型滤波器阶数估算 ellopord椭圆滤波器阶数估算 IIR数字滤波器设计(求系统函数H(z))butter cheby1 cheby2 ellip 模拟低通滤波器原型(归一化的)buttap模拟低通巴特沃斯滤波器原型cheb1ap模拟低通切比雪夫Ⅰ型滤波器原型cheb2ap模拟低通切比雪夫Ⅱ型滤波器原型ellipap模拟低通椭圆滤波器原型besselap模拟低通贝塞尔滤波器原型 模拟低通滤波器设计(求系统函数H(s))butter巴特沃斯滤波器设计cheby1切比雪夫Ⅰ型滤波器设计cheby2切比雪夫Ⅱ型滤波器设计ellip椭圆滤波器设计besself贝塞尔滤波器设计 模拟滤波器频带变换lp2bp低通→带通 lp2bs低通→带阻 lp2hp低通→高通 lp2lp低通→低通 滤波器离散化(由模拟滤波器得到数字滤波器)bilinear脉冲响应不变法impinvar双线性变换法 FIR滤波器设计fir1基于窗函数的FIR滤波器设计 fir2基于窗函数的任意响应FIR滤波器设 计 窗函数boxcar矩形窗 rectwin矩形窗 bartlett三角窗

FIR数字滤波器设计与软件实现(精)讲解学习

实验二:FIR 数字滤波器设计与软件实现 一、实验指导 1.实验目的 (1掌握用窗函数法设计 FIR 数字滤波器的原理和方法。 (2掌握用等波纹最佳逼近法设计 FIR 数字滤波器的原理和方法。 (3掌握 FIR 滤波器的快速卷积实现原理。 (4学会调用 MA TLAB 函数设计与实现 FIR 滤波器。 2. 实验内容及步骤 (1认真复习第七章中用窗函数法和等波纹最佳逼近法设计 FIR 数字滤波器的原理; (2调用信号产生函数 xtg 产生具有加性噪声的信号 xt ,并自动显示 xt 及其频谱,如图 1所示;

图 1 具有加性噪声的信号 x(t及其频谱如图 (3请设计低通滤波器,从高频噪声中提取 xt 中的单频调幅信号,要求信号幅频失真小于 0.1dB ,将噪声频谱衰减 60dB 。先观察 xt 的频谱,确定滤波器指标参数。 (4根据滤波器指标选择合适的窗函数,计算窗函数的长度 N ,调用 MATLAB 函数 fir1设计一个 FIR 低通滤波器。并编写程序,调用 MATLAB 快速卷积函数 fftfilt 实现对 xt 的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。 (5 重复 (3 , 滤波器指标不变, 但改用等波纹最佳逼近法, 调用MA TLAB 函数 remezord 和 remez 设计 FIR 数字滤波器。并比较两种设计方法设计的滤波器阶数。 提示:○ 1MA TLAB 函数 fir1的功能及其调用格式请查阅教材; ○ 2采样频率 Fs=1000Hz,采样周期 T=1/Fs;

○ 3根据图 1(b和实验要求,可选择滤波器指标参数:通带截止频率 fp=120Hz,阻带截 至频率 fs=150Hz, 换算成数字频率, 通带截止频率 p 20.24 p f ωπ =T=π, 通带最大衰为 0.1dB , 阻带截至频率 s 20.3 s f ωπ =T=π,阻带最小衰为 60dB 。 3、实验程序框图如图 2所示,供读者参考。 图 2 实验程序框图 4.信号产生函数 xtg 程序清单(见教材 二、滤波器参数及实验程序清单 1、滤波器参数选取 根据实验指导的提示③选择滤波器指标参数: 通带截止频率 fp=120Hz,阻带截至频率 fs=150Hz。代入采样频率 Fs=1000Hz,换算成 数字频率,通带截止频率 p 20.24 p f

分形树__Matlab

%这是一个生成树的主函数,它的输入分别为每叉树枝的缩短比、树枝的偏角、生长次数. %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %%小提示:若用做函数,请将虚线框内语句删去。 function f=tree(w,dtheata,NN) %%%--------------------虚线框--------------------%%% clear;clc;clf;w=0.8;dtheata=pi/6;NN=8;%建议生长次数NN不要超过10 %%%--------------------虚线框--------------------%%% n=2^NN;%从主枝算起,共需生成2^NN个树枝 for NNK=1:n x1=0; y1=0; r1=1; theata1=pi/2; dataway=ten2twoN(NNK,NN); %把每一个树枝的编号转化为一个NN位的二进制数 for NNL=1:NN if dataway(NNL)==0 [x2,y2,r2,theata2]=antmoveleft(x1,y1,r1,theata1,w,dtheata);%若路径数组上对应的数字为0,则向左生长 x1=x2; y1=y2; r1=r2; theata1=theata2; hold on %pause(eps) else [x2,y2,r2,theata2]=antmoveright(x1,y1,r1,theata1,w,dtheata);%否则,数字为1,向右生长 x1=x2; y1=y2; r1=r2; theata1=theata2; hold on %pause(eps) end end end hold off %--------------------------------------------------------------------------

数字信号处理实验——维纳滤波器设计..

实验一 维纳滤波 1. 实验内容 设计一个维纳滤波器: (1) 产生三组观测数据,首先根据()(1)()s n as n w n =-+产生信号()s n ,将其加噪,(信噪比分别为20,10,6dB dB dB ),得到观测数据123(),(),()x n x n x n 。 (2) 估计()i x n ,1,2,3i =的AR 模型参数。假设信号长度为L ,AR 模型阶数为N ,分析实验结果,并讨论改变L ,N 对实验结果的影响。 2. 实验原理 滤波目的是从被噪声污染的信号中分离出有用的信号来,最大限度地抑制噪声。对信号进行滤波的实质就是对信号进行估计。滤波问题就是设计一个线性滤波器,使得滤波器的输出信号()y n 是期望响应()s n 的一个估计值。下图就是观测信号的组成和信号滤波的一般模型。 观测信号()()()x n s n v n =+ 信号滤波的一般模型 维纳滤波解决从噪声中提取信号的滤波问题,并以估计的结果与真值之间的误差均方值最小作为最佳准则。它根据()()(),1, ,x n x n x n m --估计信号的当前 值,它的解以系统的系统函数()H z 或单位脉冲()h n 形式给出,这种系统常称为最佳线性滤波器。 维纳滤波器设计的任务就是选择()h n ,使其输出信号()y n 与期望信号()d n 误差的均方值最小。

假设滤波系统()h n 是一个线性时不变系统,它的()h n 和输入信号都是复函数,设 ()()()h n a n jb n =+ 0,1, n = 考虑系统的因果性,可得到滤波器的输出 ()()()()()0 *m y n h n x n h m x n m +∞ ===-∑ 0,1, n = 设期望信号()d n ,误差信号()e n 及其均方误差()2 E e n ???? 分别为 ()()()()()e n d n y n s n y n =-=- ()()()()()()22 2 0m E e n E d n y n E d n h m x n m ∞=?? ????=-=--????? ????? ∑ 要使均方误差为最小,需满足: ()() 2 0E e n h j ?????=? 整理得()()0E x n j e n *??-=??,等价于()()0E x n j e n * ??-=?? 上式说明,均方误差达到最小值的充要条件使误差信号与任一进入估计的输入信号正交,这就是正交性原理。 将()()0E x n j e n * ??-=??展开,得 ()()()()00m E x n k d n h m x m +∞ *** =????--=?? ???? ?∑ 整理得 ()()()0 dx xx m r k h m r m k +∞ *=-=-∑ 0,1,2, k = 等价于()()()()()0 dx xx xx m r k h m r k m h k r k +∞ ==-=*∑ 0,1,2, k = 此式称为维纳-霍夫(Wiener-Holf )方程。解此方程可得到最优权系数 012,,, h h h ,此式是Wiener 滤波器的一般方程。 定义

基于matlab的FIR数字滤波器设计(多通带,窗函数法)

数字信号处理 课程设计报告 设计名称:基于matlab的FIR数字滤波器设计 彪

一、课程设计的目的 1、通过课程设计把自己在大学中所学的知识应用到实践当中。 2、深入了解利用Matlab设计FIR数字滤波器的基本方法。 3、在课程设计的过程中掌握程序编译及软件设计的基本方法。 4、提高自己对于新知识的学习能力及进行实际操作的能力。 5、锻炼自己通过网络及各种资料解决实际问题的能力。 二、主要设计内容 利用窗函数法设计FIR滤波器,绘制出滤波器的特性图。利用所设计的滤波器对多个频带叠加的正弦信号进行处理,对比滤波前后的信号时域和频域图,验证滤波器的效果。 三、设计原理 FIR 滤波器具有严格的相位特性,对于信号处理和数据传输是很重要的。 目前 FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求高的时候是比较灵活方便的。 如果 FIR 滤波器的 h(n)为实数, 而且满足以下任意条件,滤波器就具有准确的线性相位: 第一种:偶对称,h(n)=h(N-1-n),φ (ω)=-(N-1)ω/2 第二种:奇对称,h(n)=-h(N-1-n), φ(ω)=-(N-1)ω/2+pi/2 对称中心在n=(N-1)/2处 四、设计步骤 1.设计滤波器 2.所设计的滤波器对多个频带叠加的正弦信号进行处理 3.比较滤波前后信号的波形及频谱 五、用窗函数设FIR 滤波器的基本方法 基本思路:从时域出发设计 h(n)逼近理想 hd(n)。设理想滤波器的单位响应在时域表达为hd(n),则Hd(n) 一般是无限长的,且是非因果的,不能

数字信号处理和滤波器设计

计算机仿真技术实验指导书

河南科技大学电子信息工程学院 二〇〇八年二月

计算机仿真技术实验指导书 MATLAB是一种交互式的以矩阵为基本数据结构的系统。在生成矩阵对象时,不要求明确的维数说明。所谓交互式,是指MATLAB的草稿纸编程环境。 与C语言或FORTRON语言作科学数值计算的程序设计相比较,利用MATLAB可节省大量的编程时间。 本实验指导书主要讨论四个实验。 实验一信号与系统的时域分析以及信号合成与分解 1. 实验目的 (1) 连续时间信号的向量表示法和符号运算表示法,典型离散信号表示; (2) 连续信号和离散信号的时域运算与时域变换; (3) 连续系统和离散系统的卷积,以及冲激响应、阶跃响应、单位响应、零状态响应; (4) 周期信号的傅立叶级数分解与综合(以周期方波为例); 2. 实验原理与方法 (1) 信号在MATLAB中的表示方法 MATLAB用两种方法来表示连续信号,一种是用向量的方法来表示信号,另一种则是符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,就可以利用MATLAB的绘图命令绘制出直观的信号时域波形。 向量表示法表示信号的方法是:MATLAB用一个向量表示连续信号的时间范围,另一个向量表示连续信号在该时间范围内的对应样值。如下列代码p=0.001; t=-pi:p:pi; f=1+cos(t); plot(t,f) title('f(t)=1+cos(t)') xlabel('t') axis([-pi,pi,-0.2,2.4])

执行后即可绘制连续信号1+cos(t)的时域波形。 借助于符号运算以及符号绘图函数ezplot,也可以绘制连续信号时域波形。如下列代码 syms t f=sym('1+cos(t)') %定义符号表达式 ezplot(f,[-pi,pi]) %绘制符号表达式波形 set(gcf,'color','w') %设置当前图形背景颜色为白色 执行后即可绘制连续信号1+cos(t)的时域波形。 与连续信号的表示相似,在MATLAB中,离散信号也需要用两个向量来表示,其中一个向量表示离散信号的时间范围,另一个向量表示该离散信号在该时间范围内的对应样值。但与连续信号表示有所不同的是,表示离散信号时间范围向量的元素必须为整数。如下列代码 n=[-3,-2,-1,0,1,2,3]; x=[-3,2,-1,3,1,-2,1]; stem(n,x,'filled') set(gcf,'color','w') title('x(n)') xlabel('n') 执行后即可绘制离散信号x(n)={ -3,2,-1,3,1,-2,1}的时域波形。 ↑ n=0 (2) 连续信号和离散信号的时域运算与时域变换 对连续信号而言,其基本时域变换有反褶、平移、尺度变换、倒相。 利用MATLAB的符号运算功能以及符号绘图函数ezplot,可以直观的观察和分析连续信号的时域运算与时域变换。如下列代码 syms t; f=sym('(t+1)*(heaviside(t+1)-heaviside(t))'); f=f+sym('(heaviside(t)-heaviside(t-1))'); %定义信号符号表达式 ezplot(f,[-3,3]) %绘制信号波形 axis([-3,3,-1.2,1.2]) set(gcf,'color','w')

相关主题