- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
离散时间信号通过线性时不变系统课件
数 字 信 号 处 理
实 验 报 告
实验名称: 离散时间信号通过线性时不变系统 姓 名: 专 业: 年 级: 学 号: 指导教师:
一、实验目的
1、通过本实验,进一步加深对DFT算法原理和基本性质的理解,熟悉FFT算法原理和FFT子程序的应用。
2、掌握应用FFT对信号进行频谱分析的方法。
3、通过本实验进一步掌握频谱采样定理。
4、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
二、实验原理及方法
一个连续时间信号的频谱可以用它的傅立叶变换表示
对信号进行理想采样,得到采样序列
以T为采样周期,对进行Z变换
当时,得到序列傅立叶变换SFT
为数字角频率
已经知道:
( 2-6 )
序列的频谱是原模拟信号的周期延拓,即可以通过分析序列的频谱,得到相应连续信号的频谱。(信号为有限带宽,采样满足Nyquist定理)
无线长序列可以用有限长序列来逼近,对于有限长序列可以使用离散傅立叶变换(DFT)。可以很好的反映序列的频域特性,且易于快速算法在计算机上实现。
当序列的长度为时,它的离散傅里叶变换为:
其中,它的反变换定义为:
比较Z变换式 ( 2-3 ) 和DFT式 ( 2-7 ),令则
因此有
是平面单位圆上幅角为的点,也即是将单位圆等分后的第点。所以是的变换在单位圆上等距采样,或者说是序列傅里叶变换的等距采样。
9、DFT是对序列傅里叶变换的等距采样,因此可以用于序列的频谱分析。在运用DFT进行频谱分析的过程中有可能产生三种误差,这里给出三种误差的定性讨论。
三种误差:混叠现象、泄露现象、栅栏效应
混叠现象
( 2-6 )式说明序列的频谱是原模拟信号的频谱的周期延拓,周期为。因此当采样频率小于两倍信号(这里指是信号)最大频率时,经过采样就会发生频谱混叠,这使得采样后的信号序列频谱不能真实地反映原信号的频谱。所以在利用DFT分析连续信号的频谱时,必须注意这一问题。避免混叠现象的唯一方法是保证采样速率足够高,使频谱交叠现象不致出现。也就是说,在确定采样频率之前,必须对信号的性质有所了解,一般在采样前,信号通过一个防混叠低通滤波器。
泄漏现象
实际中的信号序列往往很长,为了方便我们往往用截短的序列来近似它们,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数。
泄漏是不能与混叠完全分离开的,因为泄漏导致频谱的扩散,从而造成混叠,为了减小泄漏的影响,可以选择适当的窗函数,是频谱的扩散减到最小。
栅栏效应
因为DFT是对单位圆上Z变换的均匀采样,所以他不可能将频谱视为一个连续函数。这样就产生了栅栏效应,就一定意义上看,DFT来观看频谱就好像通过一个尖桩的栅栏来观看一个图景一样,只能在离散点上看到真实频谱,这样就可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所挡住,不能被我们观察到。减小栅栏效应的一个方法就是借助在原序列的末端添补一些零值,从而变动DFT的点数。这一方法实际上是人为地改变了对真实谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或者谷点暴露出来。当然,这是每根谱线所对应的频率和原来的不同了。
综上所述,DFT可以用于信号的频谱分析,但必须注意可能产生的误差,在应用过程中要尽可能减少和消除这些误差的影响。
快速傅里叶变换FFT是为了减少DFT运算次数的一种算法,常用的FFT是以2为基数的,其长度,它的效率高,程序简单,使用也十分方便,当要变换的序列长度不等于2的正整数次方时,可以用末尾补零的方法,使其长度延长到2的整数次方。
三、实验结果及分析
注:图均为上面时域波形,下面频域波形
高斯序列
代码1:
/************FFT***********/
#include stdio.h
#include math.h
#include graphics.h
#include stdlib.h
#define N 1000
typedef struct
{
double real;
double img;
}complex;
void fft(); /*快速傅里叶变换*/
void initW();
void ch
文档评论(0)