数字信号处理实验指导书2011.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字信号处理实验指导书2011

PAGE  PAGE 25 实验一 离散傅立叶变换 实验目的 1. 在理论学习的基础上,通过本实验,加深对离散傅立叶变换(DFT)的理解。 2. 以正弦信号为例,学习和掌握利用离散傅立叶变换(DFT)分析信号频谱的方法。 3. 了解应用DFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用DFT。 4. 学习和熟悉在计算机上作图显示和研究信号的离散频谱 二、实验原理与方法 在各种信号序列中,有限长序列的数字信号处理占有很重要地位,对有限长序列,我们可以使用离散傅立叶变换(DFT), 这一变换不但可以很好地反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为: X (k)= 反变换为: x(n)= 有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样,因此可以用于序列的谱分析。 DFT要求被分析序列的长度为有限长,对无限长和很长的序列则需要截取。截取的结果使得信号的频谱分析出现频率泄漏。本实验分析的周期性信号,对周期信号,当截取的序列长度是信号周期的整数倍的时候,DFT分析的频率离散点恰好采在周期信号的谐波分量和其它零值频率点上,能正确反映信号的频谱。当截取的序列长度不为信号周期的整数倍时,DFT分析的结果就会有频率泄漏的反映。 三、实验内容 1. 设计说明 编制程序用DFT分析正弦信号的频谱。具体包括以下几部分 (1)编程产生正弦抽样输入信号 x(t) = sin(Ωt) = sin(2πf t) x(n) = x(nT) = sin(2πf n T) 正弦信号的频率f、取样点数N和取样间隔T通过人机对话的方式由键盘输入,以便调整。 (2)编程实现DFT的运算 DFT的计算公式为 (3)计算DFT的幅度 (4)作图画出DFT的幅度谱线。 2.实验步骤 将编制的程序输入计算机,调试运行正确后,进行以下实验。 (1)分别在下列几种情况下,输入正弦信号的频率f、采样点数N和采样周期T,观察和研究DFT的结果,并记录谱线的大体形状。 (a) f = 50 Hz,N = 32,T = 0.000625 s (b) f = 50 Hz,N = 32,T = 0.005 s (c) f = 50 Hz,N = 32,T = 0.004 s (d) f = 150 Hz,N = 32,T = 0.000625 s ??2)修改程序,将输入信号改变成50 Hz和150 Hz两个正弦信号分量的迭加,并令50 Hz分量的幅度为2,150 Hz分量的幅度为1。即 x(n) = 2 sin(2π50 n T) + sin(2π150 n T) 取N = 32,分别在T = 0.000625 s、T = 0.0025 s和T = 0.002 s情况下进行DFT分析,观察和记录结果。 (3)有余力的同学还可以将输入信号改成50Hz的周期性方波,再对其进行DFT分析。 四、C语言参考程序 /* 用DFT分析正弦信号频谱的C语言程序 */ #includestdio.h #includemath.h #includeconio.h #includegraphics.h #define PI 3.1415926 float x[1024],y[1024], w[1024]; void draw(int); void axis(int,int); main() { int N,f,n,k; float T,r,i,c; /* 键盘输入f、N、T */ printf(The frequency of the Sine wave f=); scanf(%d,f); printf(The number of samples N=); scanf(%d,N); printf(The sampling period T=); scanf(%f,T); c=2*PI/N; /* 产生正弦抽样信号 */ for(n=0;nN;n++){ x[n]=sin(2*PI*f*n*T); } /* 计算DFT */ for(k=0;kN;k++){ r=i=0.0; for(n=0;nN;n++){ r=r+x[n]*cos(c*n*k); i=i+x[n]*sin(c*n*k); } y[k]=r; w[k]=i; } /* 计算DFT的幅度 */ for(k=0;kN;k++){ w[k]=sqrt(y[k]*y[k]+w[k]*w[k]); } /*

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档