实数形式离散傅立叶变换.docx

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

理解离散傅立叶变换(二)?------实数形式离散傅立叶变换(Real DFT)?上一节我们看到了一个实数形式离散傅立叶变换的例子,通过这个例子能够让我们先对傅立叶变换有一个较为形象的感性认识,现在就让我们来看看实数形式离散傅立叶变换的正向和逆向是怎么进行变换的。在此,我们先来看一下频率的多种表示方法。?一、?频域中关于频率的四种表示方法?1、序号表示方法,根据时域中信号的样本数取0 ~ N/2,用这种方法在程序中使用起来可以更直接地取得每种频率的幅度值,因为频率值跟数组的序号是一一对应的: X[k],取值范围是0 ~ N/2;2、分数表示方法,根据时域中信号的样本数的比例值取0 ~ 0.5: X[?],? = k/N,取值范围是0 ~ 1/2;3、用弧度值来表示,把?乘以一个2π得到一个弧度值,这种表示方法叫做自然频率(natural frequency):X[ω],ω = 2π? = 2πk/N,取值范围是0 ~ π;4、以赫兹(Hz)为单位来表示,这个一般是应用于一些特殊应用,如取样率为10 kHz表示每秒有10,000个样本数:取值范围是0到取样率的一半。?二、?DFT基本函数?ck[i] = cos(2πki/N)sk[i] = sin(2πki/N) 其中k表示每个正余弦波的频率,如为2表示在0到N长度中存在两个完整的周期,10即有10个周期,如下图:?上图中至于每个波的振幅(amplitude)值(Re X[k],Im X[k])是怎么算出来的,这个是DFT的核心,也是最难理解的部分,我们先来看看如何把分解出来的正余弦波合成原始信号(Inverse DFT)。?三、?合成运算方法(Real Inverse DFT)?DFT合成等式:如果有学过傅立叶级数,对这个等式就会有似曾相识的感觉,不错!这个等式跟傅立叶级数是非常相似的:?当然,差别是肯定是存在的,因为这两个等式是在两个不同条件下运用的,至于怎么证明DFT合成公式,这个我想需要非常强的高等数学理论知识了,这是研究数学的人的工作,对于普通应用者就不需要如此的追根究底了,但是傅立叶级数是好理解的,我们起码可以从傅立叶级数公式中看出DFT合成公式的合理性。? DFT合成等式中的Im?[k]和Re?[k]跟Im X[k]和Re X[k]是不一样的,下面是转换方法:??但k等于0和N/2时,实数部分的计算要用下面的等式:??上面四个式中的N是时域中点的总数,k是从0到N/2的序号。?为什么要这样进行转换呢?这个可以从频谱密度(spectral density)得到理解,如下图就是个频谱图:??这是一个频谱图,横坐标表示频率大小,纵坐标表示振幅大小,原始信号长度为N(这里是32),经DFT转换后得到的17个频率的频谱,频谱密度表示每单位带宽中为多大的振幅,那么带宽是怎么计算出来的呢?看上图,除了头尾两个,其余点的所占的宽度是2/N,这个宽度便是每个点的带宽,头尾两个点的带宽是1/N,而Im X[k]和Re X[k]表示的是频谱密度,即每一个单位带宽的振幅大小,但Im?[k]和Re?[k]表示2/N(或1/N)带宽的振幅大小,所以Im?[k]和Re?[k]分别应当是Im X[k]和Re X[k]的2/N(或1/N)。?频谱密度就象物理中物质密度,原始信号中的每一个点就象是一个混合物,这个混合物是由不同密度的物质组成的,混合物中含有的每种物质的质量是一样的,除了最大和最小两个密度的物质外,这样我们只要把每种物质的密度加起来就可以得到该混合物的密度了,又该混合物的质量是单位质量,所以得到的密度值跟该混合物的质量值是一样的。??至于为什么虚数部分是负数,这是为了跟复数DFT保持一致,这个我们将在后面会知道这是数学计算上的需要(Im X[k]计算时加上了一个负号,Im?[k]再加上负号,结果便是正的,等于没有变化)。??如果已经得到了DFT结果,这时要进行逆转换,即合成原始信号,则可按如下步骤进行转换:1、先根据上面四个式子计算得出Im?[k]和Re?[k]的值;2、再根据DFT合成等式得到原始信号数据。下面是用BASIC语言来实现的转换源代码:100 ‘DFT逆转换方法110 ‘/XX[]数组存储计算结果(时域中的原始信号)120 ‘/REX[]数组存储频域中的实数分量,IMX[]为虚分量130 ‘140 DIM?XX[511]150 DIM?REX[256]160 DIM?IMX[256]170 ‘180 PI = 3.14159265190 N% = 512200 ‘210 GOSUB XXXX?‘转到子函数去获取REX[]和IMX[]数据220 ‘230 ‘240 ‘250 FOR K% = 0 TO 256260REX[K%] = REX[K%] / (N%/2)270I

文档评论(0)

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

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

1亿VIP精品文档

相关文档