1实验一离散时间信号分析一、实验目的1.掌握各种常用的序列,理解其数学表达式和波形表示。2.掌握在计算机中生成及绘制数字信号波形的方法。3.掌握序列的相加、相乘、移位、反褶等基本运算及计算机实现与作用。4.掌握线性卷积软件实现的方法。5.掌握计算机的使用方法和常用系统软件及应用软件的使用。6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。二、实验原理1.序列的基本概念离散时间信号在数学上可用时间序列来表示,其中代表序列的第n个数字,n代表时间的序列,n的取值范围为n的整数,n取其它值)(nx没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对)(txa模拟信号进行等间隔采样,采样间隔为T,得到一个)(nTxa有序的数字序列就是离散时间信号,简称序列。2.常用序列常用序列有:单位脉冲序列(单位采样))(n、单位阶跃序列)(nu、矩形序列)(nRN、实指数序列、复指数序列、正弦型序列等。3.序列的基本运算序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。4.序列的卷积运算)()()()()(nhnxmnhmxny上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。(1)反褶:先将)(nx和)(nh的变量n换成m,变成)(mx和)(mh,再将)(mh以纵轴为对称轴反褶成)(mh。(2)移位:将)(mh移位n,得)(mnh。当n为正数时,右移n位;当n为负数时,左移n位。(3)相乘:将)(mnh和)(mx的对应点值相乘。(4)求和:将以上所有对应点的乘积累加起来,即得)(ny。2三、主要实验仪器及材料微型计算机、Matlab6.5教学版、TC编程环境。四、实验内容1.知识准备认真复习以上基础理论,理解本实验所用到的实验原理。2.离散时间信号(序列)的产生利用MATLAB或C语言编程产生和绘制下列有限长序列:(1)单位脉冲序列)(n(2)单位阶跃序列)(nu(3)矩形序列)(nRN(4)正弦型序列)35sin()(nAnx(5)任意序列)4(5)3(4)2(3)1(2)()(nnnnnnx)3(2)2()1(2)()(nnnnnh3.序列的运算利用MATLAB或C语言编程完成上述两序列的移位、反褶、和、积、标乘、累加等运算,并绘制运算后序列的波形。4.卷积运算利用MATLAB或C语言编制一个计算两个序列线性卷积的通用程序,计算上述两序列)()(nhnx,并绘制卷积后序列的波形。5.上机调试并打印或记录实验结果。6.完成实验报告。五、思考题1.如何产生方波信号序列和锯齿波信号序列?2.实验中所产生的正弦序列的频率是多少?是否是周期序列?六、实验报告要求1.简述实验原理及目的。2.列出计算卷积的公式,画出程序框图,并列出实验程序清单(可略)(包括必要的程序说明)。3.记录调试运行情况及所遇问题的解决方法。4.给出实验结果,并对结果作出分析。5.简要回答思考题。3实验二离散时间系统分析一、实验目的1.掌握离散时间信号与系统的时域分析方法。2.掌握序列傅氏变换的计算机实现方法,利用序列的傅氏变换对离散信号、系统及系统响应进行频域分析。3.熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对采样定理的理解。二、实验原理1.离散时间系统一个离散时间系统是将输入序列变换成输出序列的一种运算。若以][T来表示这种运算,则一个离散时间系统可由下图来表示:图离散时间系统输出与输入之间关系用下式表示)]([)(xxTny离散时间系统中最重要、最常用的是线性时不变系统。2.离散时间系统的单位脉冲响应设系统输入)()(nnx,系统输出)(ny的初始状态为零,这是系统输出用)(nh表示,即)]([)(nTnh,则称为系统的单位脉冲响应。可得到:)()()()()(nhnxmnhmxny该式说明线性时不变系统的响应等于输入序列与单位脉冲序列的卷积。3.连续时间信号的采样采样是从连续信号到离散时间信号的过渡桥梁,对采样过程的研究不仅可以了解采样前后信号时域何频域特性发生的变化以及信号内容不丢失的条件,而且有助于加深对拉氏变换、傅氏变换、z变换和序列傅氏变换之间关系的理解。对一个连续时间信号进行理想采样的过程可以表示为信号与一个周期冲激脉冲的乘积,即:)()()(ˆttxtxTaa其中,)(ˆtxa是连续信号)(txa的理想采样,)(tT是周期冲激脉冲)()(mTttT][T4设)(txa模拟信号,冲激函数序列)(tT以及采样信号)(ˆtxa的傅立叶变换分别为)(jXa、)(jM和)(ˆjX,即)]([)(txFjXaa)]([)(tFjMT)](ˆ[)(ˆtxFjXa根据连续时间信号与系统中的频域卷积定理,式)()()(ˆttxtxTaa表示的时域相乘,变换到频域为卷积运算,即)]()([21)(ˆjXjMjXa其中dtetxtxFjXtjaaa)()]([)(由此可以推导出)(1)(ˆsajkjXTjX由上式可知,信号理想采样后的频谱式原来信号频谱的周期延拓,其延拓周期等于采样频率。根据香农定理,如果原信号是带限信号,且采样频率高于原信号最高频率的2倍,则采样后的离散序列不会发生频谱混叠现象。4.有限长序列的分析对于长度为N的有限长序列,我们只观察、分析在某些频率点上的值。0)()(,nxnxnNn其它10一般只需要在2~2之间均匀的取M个频率点,计算这些点上的序列傅立叶变换:10)()(NnjnjkkenxeX其中,Mkk/2,1.10Mk,,,。)(jeX是一个复函数,它的模就是幅频特性曲线。三、主要实验仪器及材料微型计算机、Matlab6.5教学版、TC编程环境。四、实验内容1.知识准备认真复习离散信号与系统、单位脉冲响应、抽样定理等有关内容,阅读本实验原理与方法。52.编制信号产生子程序,用于产生实验中要用到的信号序列(1)系统单位脉冲响应序列)4()3(2)2(3)1(2)()(nnnnnnh(2)矩形序列)()(6nRnx(3)理想采样信号序列对信号)()cos()(tutAetxta进行理想采样,可以得到一个理想的采样信号序列)()cos()(nunTAenTxnT,1000n。其中A为幅度因子,是衰减因子,是频率,T为采样周期。这几个参数要在实验过程中输入,以产生不同的)(nx。3.离散信号、系统和系统响应的分析观察信号x(n)和系统h(n)的时域和频域特性;利用线性卷积求信号通过系统以后的响应。比较系统响应和系统的时域和幅频特性。注意它们之间有无差异,绘出图形。4.分析理想采样信号序列的特性产生理想采样信号序列,使:(1)首先选用采样频率为1000Hz,T=1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性无明显差异,并作记录。(2)改变采样频率为300Hz,T=1/300,观察所得理想采样信号的幅频特性曲线的变化,并作记录。(3)进一步减小采样频率为200Hz,T=1/200,观察频谱混叠现象是否明显存在,说明原因,并记录此时的幅频特性曲线。五、思考题1.线性时不变系统的输出的长度与输入和系统的单位冲激响应的长度有什么关系?2.对信号进行理想抽样时,抽样频率不同,相应理想采样序列傅立叶变换频谱的数字频率度量是否都相同7它们所对应的模拟频率是否相同?为什么?六、实验报告要求1.简述实验原理及目的。2.总结在上机实验内容中要求比较时域、幅频曲线差异部分内容的结果,定性分析它们正确与否,并简要说明这些结果的含义。3.总结实验所得主要结论。4.简要回答思考题。6实验三用FFT进行谱分析一、实验目的1.进一步加深对DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。2.熟悉FFT算法原理和FFT子程序的应用。3.学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验原理1.快速傅立叶变换(FFT)算法长度为N的序列)(nx的离散傅立叶变换)(kX为:1010)()(NnnkNNkWnxkX,,,N点的DFT可以分解为两个2/N点的DFT,每个2/N点的DFT又可以分解为两个4/N点的DFT。依此类推,当N为2的整数次幂时(MN2),由于每分解一次降低一阶幂次,所以通过M次的分解,最后全部成为一系列2点DFT运算。以上就是按时间抽取的快速傅立叶变换(FFT)算法。当需要进行变换的序列的长度不是2的整数次方的时候,为了使用以2为基的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。序列)(kX的离散傅立叶反变换为1010)(1)(NknkNNnWkXNnx,,,离散傅立叶反变换与正变换的区别在于NW变为1NW,并多了一个N/1的运算。因为NW和1NW对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT和快速傅立叶反变换(IFFT)算法合并在同一个程序中。2.利用FFT进行频谱分析若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT运算求得)(kX,)(kX就代表了序列在[0,2]之间的频谱值。幅度谱)()()(22kXkXkXIR相位谱)()(arctan)(kXkXkRI若信号是模拟信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT来对连续信号进行谱分析。按采样定理,采样频率sf应7大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。用FFT对模拟信号进行谱分析的方框图如下所示。三、主要实验仪器及材料微型计算机、Matlab6.5教学版、TC编程环境。四、实验内容1.知识准备实验前学生应认真复习DFT和FFT有关的知识,掌握快速傅里叶变换的基本原理以及如何用FFT等计算信号频谱。2.离散时间信号(序列)的产生利用MATLAB或C语言编程产生和绘制下列两有限长序列:)5.0cos(2)25.0sin()sin()8cos(nTnTnTnTnT、、)25.0(sin)25.0cos(2)125.0cos(nTnTnT、3.用一种语言编写FFT的通用程序块4.画主程序实现框图并编写主程序,实现信号的谱分析。5.记录下实验内容中各信号)(nx的)(kX值,作出频谱图。五、思考题1.根据实验中各)(nx的)(kX值以及频谱图,说明参数的变化对信号频谱产生哪些影响?2.如果周期信号的周期预先不知道,如何用FFT进行分析?六、实验报告要求1.简述实验原理及目的。2.结合实验中所得给定典型序列幅频特性曲线,与理论结合比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。3.总结实验所得主要结论。4.简要回答思考题。FFT参考子程序voidfft(double*dr,double*di,intN){intlh,m;lh=N/2;m=int(log(N)/log(2)+0.9999);intj=lh;intk;for(inti=1;i(N-1);i++)8{if(ij){doubletr,ti;tr=dr[i];ti=di[i];dr[i]=dr[j];di[i]=di[j];dr[j]=tr;di[j]=ti;}k=lh;while(j=k){j=j-k;k=k/2;}j=j+k;}for(i=1;i=m;i++){intb=int(pow(2.0,(i-1)));for(j=0;jb;j++){doublep