中南大学《数字信号处理》课程设计报告_中南大学课程设计报告
中南大学《数字信号处理》课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“中南大学课程设计报告”。
中南大学
《现代信号处理》 课程设计报告
学 院: 专业班级:
姓 名:
学 号:
指导老师:
设计时间:
前 言
《现代信号处理》课程设计与《现代信号处理》课程配套,是通信工程类专业的重要实践环节。数字信号处理是每一个电子信息科学工作者必须掌握的重要知识。它采用计算机仿真软件,以数值计算的方法对信号进行分析、变换、滤波、检测、估计与识别等加工处理,以达到提取信息便于使用的目的。
通信工程专业的培养目标是具备通信技术的基本理论和应用技术,能从事电子、信息、通信等领域的工作。鉴于我校充分培养学生实践能力的办学宗旨,对本专业学生的培养要进行工程素质培养、拓宽专业口径、注重基础和发展潜力。特别是培养学生的创新能力,以实现技术为主线多进行实验技能的培养。学生通过《现代信号处理》课程设计这一重要环节,可以将本专业的主干课程《现代信号处理》从理论学习到实践应用,对数字信号处理技术有较深的了解,进一步增强学生动手能力和适应实际工作的能力。
目 录
前 言............................................................2 第一章 设计目的及要求.............................................4
1.1 课程设计目的................................................4 1.2 课程设计要求................................................4 1.3 课程设计选做题目............................................4 第二章 设计题目及思想.............................................5
2.1 各题目的设计思想............................................5
2.1.1 第一题................................................5 2.1.2 第二题...............................................6 2.1.3 第三题...............................................6 2.1.4 第四题...............................................7 2.1.5 第五题...............................................7 2.1.6 第六题...............................................8 2.2 GUI界面设计思想............................................9 第三章 调试及结果分析............................................12 3.1 GUI界面的结果与调试.......................................12 3.2 各题目的结果与调试.........................................12 3.2.1 第一题...............................................12 3.2.2 第二题...............................................13 3.2.3 第三题...............................................14 3.2.4 第四题...............................................15 3.2.5 第五题...............................................16 3.2.6 第六题...............................................21 第四章 课程设计总结..............................................24 4.1 课程设计所遇问题及解决方案.................................24 4.2 课程设计心得体会...........................................25 附录:............................................................26 参考文献..........................................................35 第一章 设计目的及要求
1.1 课程设计目的1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力; 4.熟练使用一种高级语言进行编程实现。
1.2 课程设计要求
一、使用MATLAB(或其它开发工具)编程实现上述内容,写出课程设计报告。滤波器设计题目应尽量避免使用现成的工具箱函数。为便于分析与观察,设计中所有频谱显示中的频率参数均应对折叠频率归一化。
二、课程设计报告的内容包括:
(1)课程设计题目和题目设计要求;(2)设计思想和系统功能分析;
(3)设计中关键部分的理论分析与计算,关键模块的设计思路;(4)测试数据、测试输出结果,及必要的理论分析和比较;
(5)总结,包括设计过程中遇到的问题和解决方法,设计心得与体会等;(6)参考文献;(7)程序源代码清单。
三、课程设计考核要求:
课程考核分三部分,一部分是上机率,占20%;第二部分是检查成绩,最后两次上机为检查时间,占50%;第三部分为课程设计报告,占30%。注意:
(1)演示系统使用GUI界面或混合编程实现集成打包发布,酌情加分。(2)若发现程序或课程设计报告雷同,一律不及格。
1.3 课程设计选做题目
选题1.音乐信号处理:
1)获取一段音乐或语音信号,设计单回声滤波器,实现信号的单回声产生。给出加入单回声前后的信号频谱。
2)设计多重回声滤波器,实现多重回声效果。给出加入多重回声后的信号频谱。
3)设计均衡器,使得得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域。
选题二.对混有噪声的音乐信号进行滤波:
1)在一段音乐信号中混入两个频率的正弦型干扰信号,利用FFT计算该混合信号的频谱并确定干扰信号的频谱;
2)利用二阶带阻滤波器设计一个能滤出干扰信号的梳状滤波器; 3)利用梳状滤波器滤除信号中的噪声,播放处理前后的信号,并比较处理前后的结果
本次课程设计共有6道必做题目,并且我们并没有系统的学过MATLAB,所以我并没有做选做题。
第二章 设计题目及思想
2.1 各题目的设计思想
2.1.1 第一题
一、题目:
1.给定模拟信号:xa(t)e1000t
1)选择采样频率Fs = 5000Hz和合适的信号长度,采样得到序列 x1(n)。求并画出x1(n)及其序列傅里叶变换 |X1(ejw)|。
2)选择采样频率Fs = 1000Hz和合适的信号长度,采样得到序列 x2(n)。求并画出x2(n)及其序列傅里叶变换 |X2(ejw)|。3)说明|X1(ejw)|与|X2(ejw)|间的区别,为什么?
二、思想:
第一题主要的考查点是对连续时间信号的抽样,对抽样信号进行傅里叶变换以及不同采样频率对幅频特性曲线的影响等。主要的理论依据如下:
(1)对连续时间信号的抽样:设连续时间信号为x(t),则对其采样得到的离散时间信号为x(n)=x(nT),T为采样周期;
(2)离散时间信号的傅里叶变换:X(e)FT[x(n)]j
由于抽样后的离散时间信号题目没有给出,故应先对连续信号做抽样,后再对离散时间信号进行傅里叶变换。本次我直接采用输入公式的方式进行傅里叶变换。
nx(n)ejn。
2.1.2 第二题
一、题目:
2.已知两系统分别用下面差分方程描述:
y1(n)x(n)x(n1)
y2(n)x(n)x(n1)
试分别写出它们的传输函数,并分别打印H(ejw)~w曲线。说明这两个系统的区别。
二、思想:
第二题的主要考查点是由系统的方程得出系统的传输函数。而在MATLAB中有freqz函数可直接求出系统的传输函数,然后由abs函数以及angle函数可得出其幅频相频特性曲线。
2.1.3 第三题
一、题目:
3.已知已调信号x(t)cos(t)cos(9t),其中调制信号cos(t),载波为cos(9t)。
1)选择合适的采样频率及信号长度,使用FFT分析该已调信号的频谱并画出其幅频特性和相频特性曲线图。2)对该已调信号进行解调,恢复原调制信号。
二、思想:
第三题的主要考查点是信号的调制与解调。这属于通信原理的主要原理知识。本题第一问需要使用FFT分析已调信号的频谱特性,在MATLAB中FFT可以直接作为函数调用,所以我选择直接调用FFT对其进行分析。第二问中要对已调信号进行解调。其主要思想是解调已调信号需要先将已调信号乘以载波后选择适当的滤波器进行滤波,将其多余信号滤除。
2.1.4 第四题
一、题目:
4.已知三角波序列x1(n)和反三角波序列x2(n):
n1,0n34n,0n3x1(n)8n,4n7 x2(n)n3,4n7
0,0,其它其它用N=8点FFT分析序列x1(n)和x2(n)的幅频特性,观察两者的序列形状和频谱特性曲线有什么异同?绘出两序列及其幅频特性曲线。在x1(n)和x2(n)的末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两情况的FFT频谱还有相同之处吗?这些变化说明了什么?
二、思想:
第四题的主要考查点是FFT快速傅里叶变换的用法。而这在MATLAB中,FFT可以直接作为函数调用,所以我选择用FFT快速傅里叶变换进行分析三角波序列。不过首先要将三角波以及反三角波的取值范围和函数值计算出来,后才可直接对序列进行FFT变换并分析其频谱特性。
2.1.5 第五题
一、题目:
5.设有一信号x(n)=1+cos(n)+cos(42n),设计各种IIR数字滤波器以实现: 31)低通滤波器,滤除cos(2n)的成分,保留成分1+cos(n)342)高通滤波器,滤除1+cos(n)的成分,保留成分cos(42n)33)带通滤波器,滤除1+cos(2n)的成分,保留成分cos(n)342n)34)带阻滤波器,滤除cos(n)的成分,保留成分1+cos(4要求:1)求出各个滤波器的阶数,设计各滤波器。画出各滤波器的幅频和相频特性,计算滤波器的系统函数H(z)。2)画出滤波前后信号的时域、频域波形。
二、思想:
第五题的主要考查点是用IIR双线性变换法设计BW类型(低通、高通、带通以及帯阻)数字滤波器。
其主要理论依据如下:(1)正切变换实现频率压缩:
2tan(1T/2)/T
(2)双线性变换:
s(2/T)[(1z1)(1z1)]
或
z(2/Ts)/(2T/ s
(3)将所需数字滤波器的边界频率转换成相应类型的模拟滤波器的边界频率公式为:
(2/T)tan(/2)
其设计主要按照课中所学滤波器设计的步骤进行分步设计。但由于其系统函数的公式无法直接输入,故采用buttord函数进行巴特沃斯滤波器的方法分析所给参数计算出其系统函数的系数矩阵。再借由系统函数的系数矩阵得出具体的系统函数。得出系统函数后便可得到相应的阶数以及幅频、相频特性。
滤波前的信号频域波形由先对时域波形进行FFT变换后得出。对原信号的滤波则采用直接调用filter函数进行对原函数的滤波,而频域波形同样经由先FFT变换分析后得出。
2.1.6 第六题
一、题目:
6.1)用Hanning窗设计一线性相位带通数字滤波器,要求:N=15,。观察它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响;
2)分别改用矩形窗和Blackman窗,设计(1)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点;总结窗的不同长度和不同窗对滤波器的影响
二、思想:
第六题的主要考查点是几种主要的窗函数(矩形窗、汉宁窗、哈明窗等)对离散时间信号的截取,并用FFT对其频谱进行分析。其主要理论依据如下:
(1)矩形窗(Rectangle Window)
wR(n)RN(n)
其幅度函数为:
WRg()sin(N/2)/sin(/2)
(2)汉宁(Hanning)窗——升余弦窗
wHn(n)0.5[1cos(2n/(N1))]RN(n)
其频谱函数为:
WHn(ej)FT[wHn(n)]WHng()ej(N1)/2
其幅度函数为:
WHng()0.5WRg()0.25[WRg(2/N)WRg(2/N)]
(3)哈明(Hamming)窗——改进的升余弦窗
wHm(n)[0.540.46cos(2n/(N1))]RN(n)
其频谱函数为:
WHm(ej)0.54WR(ej)0.23WR(ej(2/(N1)))0.23WR(ej(2/(N1)))
当N1时,其幅度函数可近似表示为:
WHmg()0.54WRg()0.23WRg(2/N)0.23WRg(2/N)
2.2 GUI界面设计思想
本次课程设计由于结果中图形太多,若一次性完成所以题目的演示则需要开创许多个新的窗口进行图形建立,这样不方便验收及查看。所以最后决定采用图形用户(Graphical User Interface,简称 GUI)界面,下面对GUI界面进行简单的一些介绍。
GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。
GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。
在MATLAB主界面中输入“guide”,再敲击回车键,弹出GUI界面窗口,即可新建GUI界面,如下图所示:
图2.5 GUI界面的新建窗口图
在图2.5的窗口中点击“OK”,则可新建一个GUI界面,并进入其编辑窗口,如图2.6所示:
图2.6 GUI界面的编辑窗口图
随后便可在此窗口内编辑演示界面,此次设计主要利用的是Static Text(静态文本)和Push Button(按钮)。在界面中输入相关的静态文本,并新建若干个按钮,再以此在每个按钮上点击右键,选择View CallBacks调出Call Back函数,将相应设计题的源代码输入Call Back函数界面中对应按钮的段落后。如图2.7 和2.8所示:
图2.7 调用CallBack的操作流程图
图2.8 CallBack代码编辑窗口图
如此便可以建立一个方便、美观又直观的演示界面,以便老师验收时操作简单、条理清晰、并且用时不长。第三章 调试及结果分析
3.1 GUI界面的结果与调试
这次设计的演示界面采用的是GUI界面,这一点在前面提到过,在此不赘述了,只将界面的调试结果说明一下。演示界面如图3.1所示:
图3.1 演示界面图
如图3.1所示,用户克根据需要选择题目,每个题中又有不同的选项,只要点击一下对应的按钮,相关信号的处理结果就会出现在一个新的figure窗口中。
3.2 各题目的结果与调试
3.2.1 第一题
第一题的调试结果如图3.2所示,各图形的意义均有明确表明。
图3.2 第一题的调试结果图
分析: 分别以所要求采样频率fs=5000Hz、1000Hz对xa(t)进行等间隔采样,得到x(n)xa(nT),(T1/fs为采样周期),可知,采样信号的频谱函数是在原模拟信号频谱函数的周期延拓;若以频率f为自变量,则以采样频率fs1/T为延拓周期;对频带限于fc的模拟信号xa(t),根据采样定理,只有当fs2fc时,采样后才不会发生频谱混叠失真。但是在Matlab上是无法计算连续函数,只有在当fs足够大的时候,我们才将频谱混叠忽略不计,从而可对采样序列进行傅里叶变换;最后应用subplot()命令实现画图,并注意到要归一化。
由以上实验得到的图形结果可以看到:,当采样频率越大的时候,采样信号的频谱越陡峭,而其失真情况也越来越小,根据采样定理“采样频率越接近信号频率,其失真情况就越小”可以得到上述结论。
3.2.2 第二题
第二题的调试结果如图3.3所示,各图形的意义均有明确表明。
图3.3 第二题的调试结果图
分析:由于所求系统的系统方程已经由题目可知,则其零极点分布图也可由上图所知。故根据计算所得出其系统函数后做FFT变换所得幅频特性和相频特性均由上图可知。
3.2.3 第三题
第三题的调试结果如图3.4所示,上图为第一问结果,下图为第二问结果。
图3.4 第三题的调试结果图
分析:当已调信号进行不同点数的采样后再经不同间隔的FFT变换后,其展现的幅频特性以及相频特性类似于上图。因选取的采样点不同则结果不同。第二问中的滤波器的设计参数由题目中的调制信号和载波决定,由此设计出的低通滤波器的系统函数图如上。最后因滤波器的不严密而导致解调后的原信号有所失真,并不能完完全全的解调出原信号。
3.2.4 第四题
第四题的调试结果如图3.5所示,图中所代表意义均有标明
图3.5 第四题的调试结果图
分析:首先先根据题目中所给的三角波函数以及反三角波函数的函数式得出其波形。经由不同采样的FFT变换后有stem画出其图形如上。由图可看出三角波序列和反三角波序列在8点的FFT变换后的图形基本一样,没有太大差别。而16点FFT后的图形则有不小差异,此说明对其FFT变换时,取的点数越多,图形差异越大。
3.2.5 第五题
第五题的调试结果第一问中低通滤波器的图形如图3.6所示。
图3.6 第五题的低通滤波器调试结果图
高通滤波器的图形如图3.7所示。
图3.7 第五题的高通滤波器调试结果图带通滤波器的图形如图3.8所示。
图3.8 第五题的带通滤波器调试结果图带阻滤波器的图形如图3.9所示。
图3.9 第五题的带阻滤波器调试结果图 分析:经由一下理论知识可依次求出各滤波器的参数及系统函数。(1)正切变换实现频率压缩:
2tan(1T/2)/T
(2)双线性变换:
s(2/T)[(1z1)(1z1)]
或
z(2/Ts)/(2T/ s(3)将所需数字滤波器的边界频率转换成相应类型的模拟滤波器的边界频率公式为:
(2/T)tan(/2)
频域图形均由FFT变换后可得出。此次设计IIR数字滤波器是其参数选择并不精准,均由自己在可行范围中尝试得出最像的结果。但其滤波器的幅频特性和相频特性仍然具有失真现象。
3.2.6 第六题
第六题的调试结果依次的图形如图4.0所示。
图4.0 第六题的调试结果图
分析:此图由上往下依次为N=15及N=45的汉明窗、布莱克曼窗和矩形窗。由图形可以看出N越小时窗函数的主瓣范围越大,副瓣坡度越缓。滤波器滤波功能越好。
第四章 课程设计总结
4.1 课程设计所遇问题及解决方案
拿到设计题时,完全不知道从何处入手,一开始只会按照书上的解题思路一步步来算,一步步来解这些题目,解出来后再设法将其输入编程中,从而的到想要的答案。可是每次如此,系统输出的结果总是和预想中的不一样,有些甚至不知道哪里出了错。不过后来,在翻阅了有关参考文献后,知道了题目中大部分内容都可以通过MATLAB强大的函数工具箱里的函数直接实现。开始设计后,总是用错函数,输错参数等,这类问题层出不穷,毕竟是第一次用MATLAB进行设计实践,很多问题还是要虚心向老师和同学请教的。在很多次的请教,修改后,程序基本成功地得到了运行,调试过程中又遇到了一些小问题,大多是由于粗心导致的,这些问题在调试过程中都得到了修正。
这次课程设计过程中遇到的主要问题是频率归一化的问题,开始对归一化的概念不是很清楚。在问了班上能力较强的同学后,对这个概念深入理解了,并在程序中成功地实现了。
4.2 课程设计心得体会
通过这两周的《现代信号处理》课程设计实践,我学习会了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对数字信号处理这门学科所学理论知识的理解,掌握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。
因为这是我们第一次接触MATLAB编程语言,在编写程序以及调试的过程中遇到了很多困难,但是我通过去图书馆查找资料,请教同学老师,再自己一点点改善程序,最终还是编写出一个比较完善的程序,基本实现了所有要求功能,这是最值得我欣慰的一点。
刚拿到程序设计课题时,我感觉一片茫然,因为在之前的信号处理学习中,本身对数字信号处理这门学科的学习就不精深,更何况只是在一些例题中接触过MATLAB语言,甚至没有看过一些基础的书籍,更没有上过课,所以初次遇到一个实际问题,感觉无从下手。这是由于自己对MATLAB的模块设计不够理解,同时对MATLAB的基本语句一无所知,不过通过请教老师懂得了首先要了解解题思路,以及若要实现此次设计需要哪些最基本的思路和函数。这样一下子豁然开朗,掌握了基本设计思路之后,后面的编程就顺利多了。至此,我真真体会到清晰地思路对成功编写一个程序的重要性。
当然成功编写一个程序绝非易事,之前,我总以为程序能够正常运行,就代表着编程成功,后来我才发现我大错特错了。我用了三天时间,完成了程序的编写、改错,但我立刻发现尽管程序能够正常运行,部分功能却不完善,甚至不能出现自己想要的结果。经过一次又一次调试、修改又修改,一点一点发现问题并改正,我才真正发现编程远没有想象中的简单,并且深刻体会到编程和单纯的解题是有着多么大的不同。它需要的不仅是清晰地编程思路、编程技巧,还需要细心,有耐心有毅力。
在编程过程中,我遇到了许多问题,通过查找资料也未能找到原因,每次我想老师请教,可老师总不是万能的,顾不到每一位同学的要求。这时,同学就是一个很好的求助对象。我们可以找曾经接触过MATLAB的同学学习、交流、讨论。这样不仅我们可以学习,他们也可以更加巩固他们的知识。我想这便是团队 精神,有的时候真的是人多力量大。
最后,在此次编程过程中,我收获的不仅仅是对上学期已学的知识的巩固,和MATLAB这项新的工作平台,我还学会了遇到难题时不能轻易放弃,要有迎难而上的勇气,有时候自己一个人完成不了的理解不了的知识,多请教请教别人是一项很好的选择等等。总之,这次课程设计让我学会了很多,我会铭记于心,让其在以后的学习、生活或者工作中都时刻警醒着我。
附录:
源程序清单
%1.现代码 figure(1)t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.0002;n=-25:1:25;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,2,1);plot(t,y1);title('原函数');xlabel('t/秒');ylabel('y1(n)');subplot(2,2,2);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(1)离散序列,fs=5000');subplot(2,3,4);plot(w/pi,X);xlabel('频率/pi');ylabel('Xl(w)')title('(1)序列的傅里叶变换')t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.001;n=-5:1:5;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,3,5);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(2)离散序列,fs=1000');subplot(2,3,6);plot(w/pi,X);xlabel('频率/pi');ylabel('Xl(w)')title('(2)序列的傅里叶变换')
%2.figure(1)B=[1,1];A=1;subplot(2,3,3);zplane(B,A);xlabel('实部Re');ylabel('虚部Im');title('y(n)=x(n)+x(n-1)传输函数零极点分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,1);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅频响应特性');axis([0,2,0,2.2]);subplot(2,3,2);plot(w/pi,angle(H),'linewidth',2);grid on;axis([-0.1,2.1,-1.6,1.6]);xlabel('omega/pi');ylabel('phi(omega)');title('相频响应特性');B=[1,-1];A=1;subplot(2,3,6);zplane(B,A);xlabel('实部Re');ylabel('虚部Im');title('y(n)=x(n)-x(n-1)传输函数零极点分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,4);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅频响应特性');axis([0,2,0,2.2]);subplot(2,3,5);plot(w/pi,angle(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('phi(omega)');title('相频响应特性');axis([-0.1,2.1,-1.6,1.6]);
%3.%(1)figure(1)t=0:1.9:100;n=0:1:99;x1=cos(pi*t);x2=cos(9*pi*t);y1=x1.*x2;y2=fft(y1,100);subplot(3,1,1);plot(t,y1);title('已调信号x');xlabel('t/秒');ylabel('y1(n)');subplot(3,1,2);stem(n,abs(y2),'.');title('幅频特性');xlabel('频率/pi');ylabel('幅值');pha=angle(y2);subplot(3,1,3);stem(n,pha,'.');title('相频特性');xlabel('频率/pi');ylabel('相位(rad)');axis([0 99-5 5]);
%(2)figure(2)t1=1;t=[0:0.05:5];x=cos(pi*t).*cos(9*pi*t);%已调信号 subplot(2,2,1);plot(t,x);title('已调信号');y=x.*cos(9*pi*t);%已调信号再乘以载波信号wp=6*pi/5;ws=14*pi/8;Rp=3;As=30;%选定滤波器的参数,并设计模拟低通滤波器 [N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');[H,w]=freqs(B,A,127);%滤波器的系统函数 subplot(2,2,2);plot(w/(2*pi),abs(H));axis([0,5,0,1]);title('滤波器系统函数');w1=linspace(0,40,64);%求y的频谱 F1=y*exp(-j*t'*w1);F=[fliplr(F1),F1(2:64)];w=[-fliplr(w1),w1(2:64)];subplot(2,2,3);plot(w,abs(F)),title('y的频谱');Y3=H'.*F;%通过信号的频谱与系统函数相乘进行滤波 z=Y3*exp(j*w'*t)/pi;%滤波后的序列 subplot(2,2,4);plot(t,z);title('滤波后的序列');
%4.figure(1)n1=0:3,n2=4:7;x1=n1+1,x2=8-n2;subplot(2,3,1);stem([n1,n2],[x1,x2],'.');title('三角波序列');x=[1 2 3 4 4 3 2 1];subplot(2,3,2);stem(abs(fft(x)),'.');title('三角波序列8点FFT');x=[1 2 3 4 4 3 2 1 0 0 0 0 0 0 0 0];subplot(2,3,3);stem(abs(fft(x)),'.');title('三角波序列16点FFT');n1=0:3,n2=4:7;x1=4-n1,x2=n2-3;subplot(2,3,4);stem([n1,n2],[x1,x2],'.');title('反三角波序列');x=[4 3 2 1 1 2 3 4];subplot(2,3,5);stem(abs(fft(x)),'.');title('反三角波序列8点FFT');x=[4 3 2 1 1 2 3 4 0 0 0 0 0 0 0 0];subplot(2,3,6);stem(abs(fft(x)),'.');title('反三角波序列16点FFT');
%5.%低通figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=1/4*pi;Ws=2/3*pi;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Os/Op)), Oc1=Op*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=Os*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'low');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形');
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');%高通 figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=2*pi/3;Ws=1*pi/4;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Op/Os)), Oc1=(1/Op)*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=(1/Os)*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'high');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形');
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%带通 figure(1);wp1=(3*pi)/16;wp2=(5*pi)/16;ap=1;ws1=(1*pi)/16;ws2=(5*pi)/9;as=50;wp=[wp1/pi wp2/pi];ws=[ws1/pi ws2/pi];[N,wn]=buttord(wp,ws,ap,as);[b,a]=butter(N,wn,'bandpa');N, sysl=tf(b,a), w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形')
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%带阻 figure(1);
wp1=pi/16;wp2=(5*pi)/9;ap=1;ws1=(3*pi)/16;ws2=(5*pi)/16;as=50;wp=[wp1/pi,wp2/pi];ws=[ws1/pi,ws2/pi];[N,wc]=buttord(ws,wp,ap,as);[b,a]=butter(N,wc,'stop');w=linspace(0,2*pi,500);N, sysl=tf(b,a)
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形')
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%6.%(1)figure(1)Window=hanning(16);h=fir1(15,[0.3 0.5],Window);
freqz(h,1)title('N=15的汉宁窗');figure(2)Window=hanning(46);h=fir1(45,[0.3 0.5],Window);freqz(h,1)title('N=45的汉宁窗');%(2)figure(3)Window=blackman(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的布莱克曼窗');
figure(4)Window=blackman(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的布莱克曼窗');
figure(5)Window=boxcar(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的矩形窗');
figure(6)Window=boxcar(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的矩形窗');
参考文献
[1]高西全,丁玉美.数字信号处理.第三版.西安:西安电子科技大学出版社,2008 [2]彭军,李宏.信号与信息处理基础.北京:中国铁道出版社,2009 [3]A.V.奥本海姆,等.信号与系统.刘树棠,译.西安:西安交通大学出版社,1985 [4]程佩青.数字信号处理教程.第二版.北京:清华大学出版社,2001 [5]陈怀琛,吴大正,高西全.MATLAB在电子信息课程中的应用.第三版.北京:电子工业出版社,2006 [6]董长虹.MATLAB信号处理与应用.北京:国防工业出版社,2005