原文链接
https://blog.csdn.net/dznlong/article/details/2280867

理解离散傅立叶变换(四)
------复数形式离散傅立叶变换
复数形式的离散傅立叶变换非常巧妙地运用了复数的方法,使得傅立叶变换变换更加自然和简洁,它并不是只是简单地运用替换的方法来运用复数,而是完全从复数的角度来分析问题,这一点跟实数DFT是完全不一样的。
一、          把正余弦函数表示成复数的形式
通过欧拉等式可以把正余弦函数表示成复数的形式:
cos( x ) = 1/2 e j(-x) + 1/2 ejx
sin( x ) = j (1/2 e j(-x) - 1/2 ejx)
从这个等式可以看出,如果把正余弦函数表示成复数后,它们变成了由正负频率组成的正余弦波,相反地,一个由正负频率组成的正余弦波,可以通过复数的形式来表示。
我们知道,在实数傅立叶变换中,它的频谱是0 ~ π(0 ~ N/2),但无法表示-π~ 0的频谱,可以预见,如果把正余弦表示成复数形式,则能够把负频率包含进来。
二、          把变换前后的变量都看成复数的形式
复数形式傅立叶变换把原始信号x[n]当成是一个用复数来表示的信号,其中实数部分表示原始信号值,虚数部分为0,变换结果X[k]也是个复数的形式,但这里的虚数部分是有值的。在这里要用复数的观点来看原始信号,是理解复数形式傅立叶变换的关键(如果有学过复变函数则可能更好理解,即把x[n]看成是一个复数变量,然后象对待实数那样对这个复数变量进行相同的变换)。
三、          对复数进行相关性算法(正向傅立叶变换)
从实数傅立叶变换中可以知道,我们可以通过原始信号乘以一个正交函数形式的信号,然后进行求总和,最后就能得到这个原始信号所包含的正交函数信号的分量。现在我们的原始信号变成了复数,我们要得到的当然是复数的信号分量,我们是不是可以把它乘以一个复数形式的正交函数呢?答案是肯定的,正余弦函数都是正交函数,变成如下形式的复数后,仍旧还是正交函数(这个从正交函数的定义可以很容易得到证明):
cos x + j sin x, cos x – j sin x,……
这里我们采用上面的第二个式子进行相关性求和,为什么用第二个式子呢?,我们在后面会知道,正弦函数在虚数中变换后得到的是负的正弦函数,这里我们再加上一个负号,使得最后的得到的是正的正弦波,根据这个于是我们很容易就可以得到了复数形式的DFT正向变换等式:
这个式子很容易可以得到欧拉变换式子:
其实我们是为了表达上的方便才用到欧拉变换式,在解决问题时我们还是较多地用到正余弦表达式。
对于上面的等式,我们要清楚如下几个方面(也是区别于实数DFT的地方):
1、X[k]、x[n]都是复数,但x[n]的虚数部分都是由0组成的,实数部分表示原始信号;
2、k的取值范围是0 ~ N-1 (也可以表达成0 ~ 2π),其中0 ~ N/2(或0 ~ π)是正频部分,N/2 ~ N-1(π~ 2π)是负频部分,由于正余弦函数的对称性,所以我们把–π~ 0表示成π~ 2π,这是出于计算上方便的考虑。
3、其中的j是一个不可分离的组成部分,就象一个等式中的变量一样,不能随便去掉,去掉之后意义就完全不一样了,但我们知道在实数DFT中,j只是个符号而已,把j去掉,整个等式的意义不变;
4、下图是个连续信号的频谱,但离散频谱也是与此类似的,所以不影响我们对问题的分析:
上面的频谱图把负频率放到了左边,是为了迎合我们的思维习惯,但在实际实现中我们一般是把它移到正的频谱后面的。
从上图可以看出,时域中的正余弦波(用来组成原始信号的正余弦波)在复数DFT的频谱中被分成了正、负频率的两个组成部分,基于此等式中前面的比例系数是1/N(或1/2π),而不是2/N,这是因为现在把频谱延伸到了2π,但把正负两个频率相加即又得到了2/N,又还原到了实数DFT的形式,这个在后面的描述中可以更清楚地看到。由于复数DFT生成的是一个完整的频谱,原始信号中的每一个点都是由正、负两个频率组合而成的,所以频谱中每一个点的带宽是一样的,都是1/N,相对实数DFT,两端带宽比其它点的带宽少了一半;
复数DFT的频谱特征具有周期性:-N/2 ~ 0与N/2 ~ N-1是一样的,实域频谱呈偶对称性(表示余弦波频谱),虚域频谱呈奇对称性(表示正弦波频谱)。
四、          逆向傅立叶变换
假设我们已经得到了复数形式的频谱X[k],现在要把它还原到复数形式的原始信号x[n],当然应该是把X[k]乘以一个复数,然后再进行求和,最后得到原始信号x[n],这个跟X[k]相乘的复数首先让我们想到的应该是上面进行相关性计算的复数:cos(2πkn/N) – j sin(2πkn/N),但其中的负号其实是为了使得进行逆向傅立叶变换时把正弦函数变为正的符号,因为虚数j的运算特殊性,使得原来应该是正的正弦函数变为了负的正弦函数(我们从后面的推导会看到这一点),所以这里的负号只是为了纠正符号的作用,在进行逆向DFT时,我们可以把负号去掉,于是我们便得到了这样的逆向DFT变换等式:

x[n] = X[k] (cos(2πkn/N) + j sin(2πkn/N))

我们现在来分析这个式子,会发现这个式其实跟实数傅立叶变换是可以得到一样结果的。我们先把X[k]变换一下:

X[k] = Re X[k] + j Im X[k]

这样我们就可以对x[n]再次进行变换,如:

x[n] = (Re X[k] + j Im X[k]) (cos(2πkn/N) + j sin(2πkn/N))

= ( Re X[k] cos(2πkn/N) + j Im X[k] cos(2πkn/N) +

j Re X[k] sin(2πkn/N) -  Im X[k] sin(2πkn/N) )

= ( Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) +    ---------------------(1)

            Im X[k] ( - sin(2πkn/N) + j cos(2πkn/N)))  ---------------(2)
这时我们就把原来的等式分成了两个部分,第一个部分是跟实域中的频谱相乘,第二个部分是跟虚域中的频谱相乘,根据频谱图我们可以知道,Re X[k]是个偶对称的变量,Im X[k]是个奇对称的变量,即
Re X[k] = Re X[- k]
Im X[k] = - Im X[-k]
但k的范围是0 ~ N-1,0~N/2表示正频率,N/2~N-1表示负频率,为了表达方便我们把N/2~N-1用-k来表示,这样在从0到N-1的求和过程中对于(1)和(2)式分别有N/2对的k和-k的和,对于(1)式有:
Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) + Re X[- k] (cos( - 2πkn/N) + j sin( -2πkn/N))
根据偶对称性和三角函数的性质,把上式化简得到:
Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) + Re X[ k] (cos( 2πkn/N) - j sin( 2πkn/N))
这个式子最后的结果是:
2 Re X[ k] cos(2πkn/N)
再考虑到求Re X[ k]等式中有个比例系数1/N,把1/N乘以2,这样的结果不就是跟实数DFT中的式子一样了吗?
对于(2)式,用同样的方法,我们也可以得到这样的结果:
-2 Im X[k] sin(2πkn/N
注意上式前面多了个负符号,这是由于虚数变换的特殊性造成的,当然我们肯定不能把负符号的正弦函数跟余弦来相加,还好,我们前面是用cos(2πkn/N) – j sin(2πkn/N)进行相关性计算,得到的Im X[k]中有个负的符号,这样最后的结果中正弦函数就没有负的符号了,这就是为什么在进行相关性计算时虚数部分要用到负符号的原因(我觉得这也许是复数形式DFT美中不足的地方,让人有一种拼凑的感觉)。
从上面的分析中可以看出,实数傅立叶变换跟复数傅立叶变换,在进行逆变换时得到的结果是一样的,只不过是殊途同归吧。
附: WORD文档下载地址:http://download.csdn.net/source/444234

理解离散傅立叶变换(四. 复数形式离散傅立叶变换)相关推荐

  1. 离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习

    离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习 说在前边 最近复习\(DSP\)的时候,发现了一个号称专门针对离散实序列的变换,经分析总运算量为普通\(FFT\)的几乎一半,而且完全没有复数. ...

  2. 实数傅立叶变换和复数傅立叶变换

    我们可以将一个载波调制信号写成如下形式: xc(t)=y(t)cos[2πfct+ϕ(t)]x_c(t)=y(t)cos[2\pi f_ct+\phi(t)]xc​(t)=y(t)cos[2πfc​t ...

  3. 【信息论与编码 沈连丰】第四章:离散信源的信源编码

    [信息论与编码 沈连丰]第四章:离散信源的信源编码 第四章 离散信源的信源编码 4.1 信源编码的模型 4.2 信息传输速率和编码效率 4.3 单义可译定理 4.4 无失真信源编码定理 4.5 几种典 ...

  4. C语言复数代数式转化成极坐标式,问题:正弦量的相量是复数。 复数有四种表示形式,四种形式可以相互转换。其中代数式和极坐标形式应用得最为广泛。...

    问题:正弦量的相量是复数. 复数有四种表示形式,四种形式可以相互转换.其中代数式和极坐标形式应用得最为广泛. 更多相关问题 有3个整数a.b.c,由键盘输入,利用条件表达式,输出其中最大的数. #in ...

  5. 傅里叶变换复数形式的实部代表什么_「趣味数学」傅里叶变换及其在人工智能中的应用...

    介绍 傅里叶变换是数学中最深刻的见解之一,但不幸的是,它的意义被埋在一些荒谬的方程中.傅里叶变换是一种把东西分解成正弦波的方法.这个名字来自一个数学家叫傅里叶. 在数学术语中,傅里叶变换是一种将信号转 ...

  6. 快速傅立叶变换(FFT)算法(原来这就是蝶形变换)

    快速傅立叶变换(FFT)算法(原来这就是蝶形变换) 为了实现FFT的海面模拟,不得不先撸个FFT算法实现. 离散傅立叶变换(DFT) 学习FFT之前,首先要先了解什么是DFT,我们都知道傅立叶变换是将 ...

  7. 傅里叶变换的四种形式

    此文转自知乎的jinjin 傅里叶变换的四种形式 - 知乎 傅里叶变换是信号的一种描述方式,通过增加频域的视角,将时域复杂波形表示为简单的频率函数,获得时域不易发现的与信号有关的其他特征. 根据时间域 ...

  8. 第四章 LTI系统的变换域分析

    第四章 LTI系统的变换域分析 系统函数与频域响应 系统函数:将LTI系统的单位脉冲响应h[n]h[n]h[n]的z变换称为系统函数,表示为H(z)=∑n=−∞∞h[n]z−nH(z)=\sum_{n ...

  9. “A and B ...”,谓语动词必以复数形式呈现?

    转自:https://www.shanbay.com/footprints/article/2836/ 通常情况下,大家都会以为"A and B"这样的句型里,谓语动词以复数形式呈 ...

最新文章

  1. oracle em 性能点不进,oracle em节点启动不成功问题处理总结
  2. python字符串/元组/列表/字典互转
  3. [渝粤教育] 西南科技大学 数据库应用 在线考试复习资料(1)
  4. STL源码剖析 配接器
  5. 织梦cms生成首页html的php文件,织梦DedeCMS定时自动生成首页HTML的实现方法
  6. Vue.js 学习笔记 十 自定义按键事件
  7. 《Python核心编程(第2版)》读书笔记(6)之用列表模拟堆栈(关键词:Python/列表/堆栈/stack.py)
  8. FGUI编辑器插件开发(不推荐使用,当做参考吧)
  9. 不知道音频格式转换软件哪个好?打工人都在用的几款你别错过
  10. 夜深人静, 看看编程人生
  11. 数仓项目——在线教育平台离线数据仓库效果展示
  12. 我的职业是计算机英语,职业英语系列:计算机英语
  13. mysql connect reset_困扰我多年的Connection reset问题
  14. ORACLE LPAD()函数
  15. 03 关键测量指标——整体网络测量
  16. vue+播放直播视频流(websocket的流文件)
  17. OpenResty实现限流的几种方式
  18. 全球竞争力报告全部数据(2006-2019年)
  19. 计算机系统的储存单位及换算关系,计算机储存单位和换算关系
  20. 计算机室内设计职业环境分析,室内设计职业规划书

热门文章

  1. PDE约束优化控制问题-五点差分法结合adjoint
  2. 【申博攻略】北京交通大学2023年学术型博士招生简章有哪些变化?
  3. 删,删,删,就知道删!
  4. Modulesim Error: (vsim-3033) The design unit was not found的解决办法
  5. 使用ThreeJs搭建BIM模型浏览器-第十步 加载优化
  6. DHT11温湿度电子元件引脚说明
  7. 那年,我们二十七八岁
  8. 2017年个人总结-程序员的中年焦虑症
  9. 父域服务器怎么维护,局域网主机服务器怎么进行监控维护
  10. 【汉诺塔-算法必备】