基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx

上传人:b****6 文档编号:21813535 上传时间:2023-02-01 格式:DOCX 页数:16 大小:168.44KB
下载 相关 举报
基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx_第1页
第1页 / 共16页
基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx_第2页
第2页 / 共16页
基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx_第3页
第3页 / 共16页
基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx_第4页
第4页 / 共16页
基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx

《基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

基于matlab的fir滤波器的设计课程设计Word文档下载推荐.docx

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处,

根据以上对称条件,可以将FIR滤波器分为4种:

h(n),evenlysymmetric,oddN

h(n),evenlysymmetric,evenN,3

h(n),oddlysymmetric,oddN,

h(n),oddlysymmetric,evenN,

典型的窗函数

(1)矩形窗(RectangleWindow)

其频率响应和幅度响应分别为:

(2)三角形窗(BartlettWindow)

其频率响应为:

(3)汉宁(Hanning)窗,又称升余弦窗

(4)海明(Hamming)窗,又称改进的升余弦窗

其幅度响应为:

(6)凯泽(Kaiser)窗

其中:

β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。

I0(·

)是第一类修正零阶贝塞尔函数。

5种窗函数性能比较

窗类型

旁瓣峰值

主瓣峰值

最小阻带衰减

矩形窗

13dB

4π/M

21dB

三角窗

25dB

8π/M

汉宁窗

31dB

44dB

海明窗

41dB

53dB

凯泽窗

57dB

12π/M

74dB

用窗函数设计FIR滤波器的基本方法

设计思想:

从时域从发,设计

逼近理想

设理想滤波器

的单位脉冲响应为

以低通线性相位FIR数字滤波器为例。

一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。

要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断

,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。

按照线性相位滤波器的要求,h(n)必须是偶对称的。

对称中心必须等于滤波器的延时常数,即

用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。

为了消除吉布斯效应,一般采用其他类型的窗函数。

使用窗函数法设计时要满足以下两个条件:

(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;

(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进而增加阻带的衰减。

设计步骤

a.录制一段自己的语音信号,并对录制的信号进行采样。

b.画出采样后语音信号的时域波形和频谱图。

c.噪声的添加。

d.给出滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应。

e.设计滤波器并对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。

f.回放语音信号。

g..设计一个GUI界面(选做)。

(a)语音信号的采集

利用Windows下的录音机,录制一段自己的话音,时间在2s内。

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。

代码:

[y,fs,bits]=wavread('

zyb.wav'

[102463500]);

sound(y,fs,bits);

(b)语音信号的频谱分析

首先画出语音信号的时域波形;

然后对语音号进行快速傅里叶变换,得到信号的频谱特性。

Y=fft(y,4096);

figure

(1);

plot(y);

title('

语音信号的时域波形'

);

figure

(2);

plot(abs(Y));

语音信号的频谱特性'

(c)利用特定的函数产生噪声。

t=0:

0.2:

10;

y1=awgn(y,10,'

measured'

Y1=fft(y1,4096);

figure(3);

plot(y1);

加噪语音信号的时域波形'

figure(4);

plot(abs(Y1));

加噪语音信号的频谱特性'

(d)设计数字滤波器和画出其频率响应

给出各滤波器的性能指标:

(1)低通滤波器性能指标fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。

(2)高通滤波器性能指标fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。

(3)带通滤波器性能指标fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。

利用窗函数法和双线性变换法设计其上的低通滤波器。

在Matlab中,利用函数fir1设计FIR滤波器,并利用Matlab中的函数freqz画出各滤波器的频率响应。

(e)用滤波器对信号进行滤波

利用设计出的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。

(f)比较滤波前后语音信号的波形及频谱

在一个窗口同时画出滤波前后的波形及频谱。

(g)回放语音信号

在Matlab中,函数sound可以对声音进行回放。

(h)设计系统界面(选作)

为了使编制的程序操作方便,设计GUI的用户界面。

设计流程图

程序代码:

fs=20000;

%********对外部声音的读取和处理**********************************************

张源斌.wav'

[204860000]);

%*************添加噪声******************************************************

n=length(y);

1/fs:

(n-1)/fs;

Au=0.04

Noise=[Au*sin(2*pi*5000*t)]'

;

y1=y+Noise;

Y=fft(y1,4096);

sound(y1,fs,bits);

%********FIR滤波器设计******************************************************

rp=1;

rs=100;

fcuts=[10001200];

d1=(10^(rp/20)-1)/(10^(rp/20)+1);

d2=10^(-rs/20);

mags=[10];

devs=[d1d2];

[n,wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);

b=fir1(n,wn,ftype,kaiser(n+1,beta),'

noscale'

figure(5);

freqz(b,1,512);

grid;

xlabel('

频率/Hz'

ylabel('

频率响应幅度'

%********对原信号进行滤波***************************************************

f1=filter(b,1,y1);

sound(f1,20000);

%播放滤波后的信号

%********比较波形滤波前后时域的图形******************************************

figure(6)

subplot(2,1,1)

plot(y1)%画出滤波前的时域图

滤波前的时域波形'

times'

幅度'

subplot(2,1,2)

plot(f1);

%画出滤波后的时域图

滤波后的时域波形'

%********比较波形滤波前后频域的图形******************************************

F0=fft(f1,1024);

f=fs*(0:

511)/1024;

figure(7)

y2=fft(y1,1024);

subplot(2,1,1);

plot(f,abs(y2(1:

512)));

%画出滤波前的频谱图

滤波前的频谱'

axis([0400001.5]);

F1=plot(f,abs(F0(1:

%画出滤波后的频谱图

滤波后的频谱'

运行结果图

GUI设计

screen=get(0,'

screensize'

W=screen(3);

H=screen(4);

figure('

color'

[0.85,0.75,0.35],'

position'

[0.5*H,0.5*H,0.5*W,0.5*H],...

'

name'

'

张源斌图形演示界面'

'

Numbertitle'

off'

Menubar'

none'

hplot=uimenu(gcf,'

Label'

&

Plot'

uimenu(hplot,'

语音信号采集'

call'

['

[y,fs,Nbits]=wavread('

张源斌'

...

]);

[x1,fs,nbits]=wavread('

...'

t=length(x1)/20000;

1023)/2048;

Au=0.05;

d=[Au*cos(2*pi*3800*t)];

x2=x1+d;

'

plot(x2);

Call'

X=fft(x2,4096);

plot(abs(X));

滤波前后信号波形和频谱'

x1=wavread('

wang'

...'

fp=1000;

fc=1200;

As=100;

Ap=1;

fs=8000;

wc=2*pi*fc/fs;

wp=2*pi*fp/fs;

beta=0.112*(As-8.7);

wdel=wc-wp;

N=ceil((As-8)/2.285/wdel);

wn=kaiser(N+1,beta);

ws=(wp+wc)/2/pi;

b=fir1(N,ws,wn);

freqz(b,1);

x=fftfilt(b,x2);

X=fft(x,8192);

plot(x);

滤波后信号波形'

hoption=uimenu(gcf,'

Option'

hfigcor=uimenu(hoption,'

FigureColor'

separator'

on'

uimenu(hfigcor,'

Red'

Accelerator'

r'

set(gcf,'

Color'

Black'

k'

Blue'

b'

Yellow'

y'

uimenu(gcf,'

Quit'

Close(gcf)'

设计心得

在课程设计期间由于做考试复习,在第一周自己并没有在课程设计上下很大的功夫,只是在做课程的时间在网上找找资料,并做一些MATLAB操作,并没有深入研究。

第二周考试结束后,自己把所有的经历都放在课程设计上了,由于数字信号处理这门课的知识自己很长时间没有复习,基本忘得差不多了,再加上自己没有学过MATLAB,因此做起来很是吃力,还好有许多学过MATLAB的同学以及指导老师给自己相当大的帮助,从开始的声音信号采集,并分析时域和频域特性。

到为声音信号添加噪声,再到滤波器的设计以及滤波后的时域和频域分析,几乎都是自己一步一步的做出来的,对程序有了很多的理解,也对MATLAB的基本操作掌握了一些,掌握了各种窗函数的一些用法,这让自己感到十分欣慰,因为自己有多掌握了许多有用的知识,同时自己也发现了自己在学习上的许多缺点及错误方法,这在以后自己要逐渐改正。

现在自己已经是一名大三的学生了,即将升入大四,做这样的课程设计对自己有很大的帮助,无论将来自己是就业还是考研,加强动手能力是十分有必要的。

参考文献

1.程佩青《数字信号处理教程》北京清华大学出版社2007年2月.

2.赵知劲、刘顺兰《数字信号处理实验》.浙江大学出版社.

3.S.K.Mitra.DigitalSignalProcessing:

AComputer-BasedApproach.

NewYork,NewYork:

McGraw-Hill,thirded,2006.

4.肖伟、刘忠等《MATLAB程序设计与应用》清华大学出版社、北京交通大学出版社.

5.胡良剑、孙晓君《MATLAB数学实验》.高等教育出版社.

6.杨述斌、李永全《数字信号处理实践教程》华中科技大学出版社.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1