数字信号处理课程设计报告Word下载.docx

上传人:b****6 文档编号:19730462 上传时间:2023-01-09 格式:DOCX 页数:15 大小:256.71KB
下载 相关 举报
数字信号处理课程设计报告Word下载.docx_第1页
第1页 / 共15页
数字信号处理课程设计报告Word下载.docx_第2页
第2页 / 共15页
数字信号处理课程设计报告Word下载.docx_第3页
第3页 / 共15页
数字信号处理课程设计报告Word下载.docx_第4页
第4页 / 共15页
数字信号处理课程设计报告Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数字信号处理课程设计报告Word下载.docx

《数字信号处理课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计报告Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

数字信号处理课程设计报告Word下载.docx

第一章概述

1.1FIR、IIR概述

数字滤波器是指输入输出均为数字信号,通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。

数字滤波器与模拟滤波器相比数字滤波器具有精度高、稳定、体积小、重量小、灵活等特点。

主要分为两种:

有限脉冲响应FIR和无限脉冲响应IIR。

设计滤波器的主要要求有两种,一是幅频特性,一是相频特性。

一般的滤波器主要是对幅频特性作出要求,如果对输出相频特性也有要求,就需要用到线性相位滤波器。

IIR滤波器的设计主要有两类,一是借助于模拟滤波器设计进行,二是直接在频域或时域中进行设计。

FIR滤波器的设计不能借助于模拟滤波器,也有两类设计方法,一是窗函数法,二是频率采样法。

还有一种比较有效的方法是切比雪夫等波纹逼近法,需通过计算机辅助进行。

1.2题目要求

设计一个工作流程如图所示的信号滤波演示系统:

图2滤波演示图

⑴信号发生器—根据信号选择分为两大类:

①静态型:

直接输入(或从文件读取)测试信号序列;

②动态型:

输入由多个不同频率正弦信号叠加组合而成的模拟信号公式

采样频率(Hz)以及采样点数,动态生成该信号的采样序列,作为测试信号。

⑵DFT频谱分析—使用DFT对产生的测试信号进行频谱分析并展示其幅频、相频特性,指定需要滤除或保留的频带,通过选择滤波器类型(IIR/FIR),确定对应的滤波器(低通、高通、带通、带阻)技术指标。

⑶滤波器设计—根据IIR/FIR数字滤波器技术指标设计滤波器,生成相应的滤波器系数,并展示对应的滤波器幅频(衰减)、相频特性。

①IIRDF设计:

使用双线性变换法,可选择滤波器基型(巴特沃斯或切比雪夫型);

②FIRDF设计:

使用窗口法,可选择窗口类型。

⑷数字滤波—根据设计的滤波器系数,对测试信号进行滤波。

①IIRDF:

要求通过差分方程迭代实现滤波,未知初值置零处理;

②FIRDF:

要求通过快速卷积实现滤波。

可以选择使用重叠相加或重叠保留法进行卷积运算,并动态展示卷积运算的详细过程。

⑸输出信号分析—展示滤波后信号的幅频与相频特性,分析是否满足滤波要求。

对同一滤波要求,根据输出信号频谱,对比分析各类滤波器的差异。

为便于分析,对

(2)~(5)中所涉及的频率均做对折叠频率的归一化处理。

将一段语音作为测试信号,通过频谱展示和语音播放,对比分析滤波前后语音信号的变化,

进一步加深对数字信号处理的理解。

第二章设计分析

2.1算法分析

此题目的实现可分为三个某块的设计实现:

输入信号模块,设计滤波器模块,滤波模块。

首先明确各模块间的数据依赖关系:

在输入信号模块得到信号后,对信号进行频域分析,从而确定滤波器的相关技术指标,根据滤波器的技术指标与类型,在滤波器设计模块完成滤波器的设计,然后将滤波器的设计结果传递给滤波模块,滤波模块同时接收输入信号,从而通过运算,实现信号的滤波处理。

从数据传递关系上分析,滤波模块的实现依赖于其他模块的数据输出,因此放在最后设计。

先设计输入模块。

因为此设计相对复杂,分模块设计,通过参数传递和接口实现分模块设计即检验,提高程序的稳定性与健壮性。

输入的实现可以有两种方式:

静态输入和动态输入。

静态输入选择从文本输入数据,将信号取样值以矩阵的形式存放在文本中。

采用文件的读取就可以实现,比较容易。

动态输入,即输入由一系列频率的正弦信号相加的组成的信号,需要经过采样的,注意在设置采样频率时一定要符合奈奎斯特准则,提高采样点数,增加频谱分辨率。

最后输出一采样信号向量,传递给其余两模块。

滤波器的设计,通过输入信号的频谱分析,设置滤波器的参数,然后才可以设计滤波器。

第一步需要总结设计滤波器需要哪些参数,通过学习可以总结,所有滤波器的参数有四个:

通带截止频率、阻带截止频率、通带最大衰减、阻带最小衰减。

对滤波器的设计分两类:

FIR和IIR,二则所需的函数及设计方法不同。

IIR采用借助于模拟滤波器的方式,包括巴特沃斯滤波器和切比雪夫滤波器两种类型。

FIR采用窗函数方式,有矩形窗、三角窗、汉明窗、汉宁窗、布莱克曼和凯塞窗。

通过调用不同的函数来实现滤波器的设计。

特别在实现窗函数滤波器时,各个函数的主要区别是不同的频率采样,可以通过选择结构实现,简化程序。

通过滤波器的设计最后可以得到滤波器的系统函数

的系数。

分析滤波器的幅频特性和相频特性,如果不符合要求重新设定滤波器参数或者换成其他滤波器类型。

如果性能符合要求,则将系数传递给滤波模块。

滤波模块不调用滤波函数,实现滤波功能根据滤波器类型的不同,有两种方式可以选择,一种是通过差分方程运算,一种是通过线性卷积运算。

前者适合对IIR滤波器进行滤波,后者适合对FIR滤波器进行滤波。

且线性卷积为实现对长序列的卷积运算,采用重叠相加法,采用动态变化展示运算过程。

2.2在matlab中实现的分析

输入模块通过读取文件和直接输入数据运算可以很容易实现。

在输入信号确定后,要对其进行频谱分析,从而确定滤波器的参数和类型(低通、高通、带通、带阻),此模块作用也就完成,将数据分别用全局变量传递给下面的模块。

滤波器的设计,巴特沃斯和切比雪夫的滤波函数调用为:

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

[N,Wc]=cheb1ord(wp,ws,rp,rs);

[B,A]=butter(N,Wc,’property’);

[B,A]=cheby1(N,rp,Wc,’property’);

property对于低通和高通为’’,带通’high’,带阻’stop’;

窗函数滤波器设计的调用函数:

求窗函数的阶数:

N=ceil((h*pi)/wdel);

%wdel为窗函数的过渡带宽,h对应不同窗函数的值

wn=boxcar(N+1);

wn=triang(N+1);

wn=hanning(N+1);

wn=hamming(N+1);

wn=blackman(N+1);

wn=kaiser(N+1,beta);

%bata为kaiser的a参数

B=fir1(N,ws,'

property'

wn);

需要注意的是,窗函数对滤波参数的使用,需要通过运算得到一窗函数阶数,对通带最大衰减无使用。

需要注意FIR和IIR对参数的不同利用。

滤波模块:

运用差分方程运算的滤波函数,可以用循环调用简单实现。

动态展示线性卷积的重叠相加法可以用流程图来说明:

图5重叠相加法流程图

第三章MATLAB程序实现

3.1程序主体介绍

此程序界面也是采用GUI,不过是采用图形用户界面开发环境。

和第一个对比,布局更加容易,很容易调整界面。

但是在一些函数操作行会受一些限制,比如函数参数的传递,目前来说还是采用全局变量才能完成。

pushbutton1_Callback(hObject,eventdata,handles)

%获得输入信号

uipanel11_SelectionChangeFcn(hObject,eventdata,handles)

%获取滤波器的设计参数

uipanel15_SelectionChangeFcn(hObject,eventdata,handles)

%设计滤波器

pushbutton4_Callback(hObject,eventdata,handles)

%进行滤波

以上是一些功能控件,需要注意的是他们的viewballcak属性,对于groupbutton一组按钮,需要选用SelectionChangeFcn,其余选择callback属性即可。

另外,handles函数作用为传递的句柄,是一结构体,调用时注意此处。

其余和直接用函数创建GUI界面无太大区别。

图14信号滤波演示的界面

3.2子程序

[k]=select2(ha1,ha2,ha3,ha4,ha5,ha6,ha7,ha8)

%识别不同的按键

[wswprprs]=renum(ha1,ha2,ha3,ha4,ha5,ha6)

%获取输入信号

[BA]=hbutter(wp,ws,rp,rs,t1,fs)

%butter滤波器设计

[BA]=hcheby(wp,ws,rp,rs,t1,fs)

%cheby滤波器设计

[B,A]=hwindow(wp,ws,rp,rs,t2,t1,fs)

%6种窗函数滤波器的设计

[y]=overplus(ory,B,Np,ha1)

%重叠相加法

[y]=proy(ory,B,A)

%查分方程滤波

3.3程序调试

1、在选择使用groupbutton时,需要使用SelectionChangeFcn才能正确,否则会有错误提示。

2、进行滤波器调用时,参数的调用需要特别注意

3、进行重叠相加法时,图形的保留与暂停的顺序要保证。

3.4程序运行

巴特沃斯滤波特性切比雪夫滤波特性

矩形窗三角窗

汉宁窗哈明窗

布莱克曼窗凯塞窗

图16运行后的函数对照

第四章结束语

本次课程设计可以称为matlab和数字信号处理的综合设计,因为这次有一半的时间在研究matlab,有一半的时间在思考数字信号问题的解决。

几天下来收获是很多的,对数字信号处理有了一次全面的回顾,而且也看到了matlab的神秘面容。

只要是自己真正的努力去做了,就绝对不会后悔在课程设计上花费的时间。

现在发现自己确实会的太少,而这次又学了太多,对自己以后的学习还是有鞭策意义的。

这次课程设计也使我认识到了matlab的强大,或者进一步说工具软件有着你意想不到的功效,能节省你的时间,同时又能够让你从实践上更深层次的认识到所学知识的奇妙,而且可以同时明白了学习与实践的相辅相成。

对课程设计也是一直保持很高兴趣的,虽然有时为它焦头烂额,但是也会因此有柳暗花明的喜悦,任何事情都折射着一个普通的道理——付出才有回报。

浅显的道理,却是需要我们用毅力来坚持见证的。

具体来说,通过本次课程设计,我掌握了MATLAB的基本运用,尤其是其中GUI可视化图形用户界面的设计,包括函数调用与在图形用户界面开发环境下的调用。

函数的调用与参数的传递是两个简单却很容易出错的地方,自由细心才可以保证程序的健壮性。

对数字信号本身内容的理解来说,全书的内容确实是可以融合在这两个课程设计题目中的,一个是DFT运用,另一个是滤波器的设计和利用。

对全书的内容可以做出最好的概括。

其中滤波器的设计中,调用了许多滤波函数,这是本次实验有点欠缺的地方,但是仍然从整体上把握了整个滤波器的设计过程。

对于课程设计中出现的问题,解决的方式有两种,一是自己解决。

可以上网,查阅图书和matlab的本身的帮助文件,不断尝试,自己修改错误,可以更好的反省。

二是与同学相商。

一加一不是等于二那么简单的,相互交流才是进步的最好方式。

其中解决问题最重要的应该是坚持不懈,在遇到问题时,不放弃才有可能称为最后的胜利者。

每次课程设计都收获颇多,而且每次都对自己的学习态度做一次调整,这个的作用确实是很大的,希望以后更加珍惜的课程设计的时间。

参考文献

[1]丁玉美等.数字信号处理[M].西安:

西安电子科技大学出版社,2002

[2]程佩青.数字信号处理教程,第二版[M].北京:

清华大学出版社,2001

[3]赵树杰等.数字信号处理[M].西安:

西安电子科技大学出版社,1997

[4]陈怀琛等.MATLAB及在电子信息课程中的应用[M],北京:

电子工业出版社出版,2002

[5]余成波.数字信号处理及MATLAB实现,第一版[M].北京:

清华大学出版社,2008

[7]维纳.k.恩格尔等.数字信号处理使用MATLAB[M].西安:

西安交通大学出版社

程序源代码清单

%巴特沃斯滤波器设计

function[BA]=hbutter(wp,ws,rp,rs,t1,fs)

wp=2*wp/fs;

ws=2*ws/fs;

ift1==1

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

elseift1==2

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

high'

);

elseift1==3

elseift1==4

stop'

else

A=[];

B=[];

end

%切比雪夫滤波器设计

function[BA]=hcheby(wp,ws,rp,rs,t1,fs)

ift1==1

[B,A]=cheby1(N,rp,Wc);

elseift1==2

[B,A]=cheby1(N,rp,Wc,'

elseift1==3

end

%窗函数设计

function[B,A]=hwindow(wp,ws,rp,rs,t2,t1,fs)

wp=2*pi*wp/fs;

ws=2*pi*ws/fs;

A=[1];

wdel2=abs(ws-wp);

ift1==4|t1==3

wdel=wdel2

(1);

wdel=wdel2;

beta=0.112*(rs-8.7);

N=ceil((rs-8)/wdel);

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

ift2==3

wn=boxcar(N+1);

elseift2==4

elseift2==5

elseift2==6

wn=hamming(N+1);

elseift2==7

elseift2==8

wn=kaiser(N+1,beta);

B=fir1(N,ws,wn);

B=fir1(N,ws,'

function[y]=proy(ory,B,A)

y=[];

M=length(B);

N=length(A);

nx=length(ory);

forni=1:

nx

s1=0;

s2=0;

m1=min([niM]);

forj=1:

m1

s1=s1+B(j)*ory(ni-j+1);

end

m2=min([niN]);

forj2=2:

m2

s2=s2+A(j2)*y(ni-j2+1);

y(ni)=s1-s2;

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

当前位置:首页 > 总结汇报

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

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