傅里叶变换的虚数部分
数据分析中用到傅里叶变换,只好把大学里学的云山雾绕的课本拿出来重修了一遍。傅里叶级数还好理解,傅里叶变换就有点摸不着头脑了。特别是里面的虚数部分,到底是什么意思?它到底是怎么跑出来的。为什么一个好好的实函数就变成虚函数了?还能不能一起玩耍了?
钻进了牛角尖,不搞清这个问题吃饭都不香了。网上傅里叶级数的资料很多,又是群理论,又是希尔伯特空间的,搞得俺这个工科生更是头大。忽然灵机一动,找到了原因所在(自认为),写出来与诸君共享,理解不对的地方大神指正。
一、傅里叶级数
这是比较好理解的,就是一个周期函数,可以分解成很多个简谐函数的叠加,其中有余弦分量和正弦分量,代表着简谐函数的相位。
这是傅里叶变换的公式:
f(x)=a0+∑k=1∞[akcos(kx)+bksin(kx)]f(x) = a_{0} + \sum_{k=1}^\infty \Bigl[ a_{k} \cos(kx) + b_{k}\sin(kx)\Bigr] f(x)=a0+k=1∑∞[akcos(kx)+bksin(kx)]
然后用欧拉公式:
eit=cos(t)+isin(t)e^{it} = \cos(t) +i\sin(t) eit=cos(t)+isin(t)
e−it=cos(t)−isin(t)e^{-it} = \cos(t) -i\sin(t) e−it=cos(t)−isin(t)
则:
cos(t)=eit+e−it2\cos(t) = \frac{e^{it}+e^{-it}}{2} cos(t)=2eit+e−it
sin(t)=eit−e−it2i\sin(t) = \frac{e^{it}-e^{-it}}{2i} sin(t)=2ieit−e−it
代入得:
f(x)=a0+∑k=1∞[akeikx+e−ikx2+bkeikx−e−ikx2i]f(x) = a_{0} + \sum_{k=1}^\infty \Bigl[ a_{k} \frac{e^{ikx}+e^{-ikx}}{2} + b_{k} \frac{e^{ikx}-e^{-ikx}}{2i}\Bigr] f(x)=a0+k=1∑∞[ak2eikx+e−ikx+bk2ieikx−e−ikx]
化简,注意1i=−i\frac{1}{i} = -ii1=−i ,得:
f(x)=a0+∑k=1∞[ak−ibk2eikx+ak+ibk2e−ikx]f(x) = a_{0} + \sum_{k=1}^\infty \Bigl[ \frac{a_{k}-ib_{k}}{2} e^{ikx} +\frac{a_{k}+ib_{k}}{2}e^{-ikx}\Bigr] f(x)=a0+k=1∑∞[2ak−ibkeikx+2ak+ibke−ikx]
关键的地方来了。1到∞\infty∞的-k是等于−∞-\infty−∞到-1的k的。注意上式中累加部分的第二部分可以改写为:
f(x)=a0+∑k=1∞ak−ibk2eikx+∑k=−∞−1ak+ibk2eikxf(x) = a0 + \sum_{k=1}^\infty \frac{a_{k}-ib_{k}}{2}e^{ikx} + \sum_{k=-\infty}^{-1} \frac{a_{k}+ib_{k}}{2}e^{ikx}f(x)=a0+k=1∑∞2ak−ibkeikx+k=−∞∑−12ak+ibkeikx
设一个分段序列cnc{n}cn:
ck={ak+ibk2−∞<k<=−1,a0k=0,ak−ibk21<=k<∞(1)c_{k}=\left\{ \begin{aligned} &\frac{a_{k}+ib_{k}}{2}\qquad& \text{$-\infty<k<=-1,$ } \\ &a{0}\qquad &\text{$k=0,$ } \\ &\frac{a_{k}-ib_{k}}{2}\qquad&\text{$1<=k<\infty$ } \end{aligned} \right. \tag{1} ck=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧2ak+ibka02ak−ibk−∞<k<=−1, k=0, 1<=k<∞ (1)
则:
f(x)=∑k=−∞∞ckeikxf(x) = \sum_{k=-\infty}^{\infty}c_{k}e^{ikx} f(x)=k=−∞∑∞ckeikx
就这样一个好好的实函数被转换成了复函数。这个证明的过程并不规范,但意思是大概齐的。那么,从这个证明过程中我们能获得哪些信息呢?
- ckc_{k}ck是复数,这也是为什么fft的结果是复数。
- ckc_{k}ck以y轴为对称点,两侧的实部是相同的,虚部是相反的,即相互共轭。这带来的结果有两点,1)当画出ckc_{k}ck的振幅图的时候,图像是对称的,但实际上它并不是偶函数。2)可以证明ckeikxc_{k}e^{ikx}ckeikx和c−kei(−k)xc_{-k}e^{i(-k)x}c−kei(−k)x也是共轭的,所以两者相加的时候,实部乘2,虚部抵消,所以傅里叶变换和其逆变换的结果仍然是实函数。
- 由于ckc_{k}ck和c−kc_{-k}c−k是共轭的,所以只看半边的ckc_{k}ck就可以获得所有的信息,包括频率的振幅和相位信息。
二、傅里叶变换
傅里叶变换是在傅里叶级数上的拓展。我们在讨论傅里叶级数的时候有一个前提,就是f(x)f(x)f(x)是在(−π,π)(-\pi,\pi)(−π,π)上的周期函数。把周期的边界扩展为(−∞,∞)(-\infty,\infty)(−∞,∞),同时把k由自然数扩展到整个实数坐标轴上,傅里叶级数就变成了傅里叶变换。
f(x)=12π∫−∞∞f^(λ)eiλxdλf(x) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}\hat{f}(\lambda)e^{i\lambda x}d\lambda f(x)=2π1∫−∞∞f^(λ)eiλxdλ
傅里叶变换和傅里叶级数非常相似,很多性质也是近似的,也可以用类似的方法予以证明。比方说,在λ\lambdaλ和−λ-\lambda−λ两个点上,f^(λ)\hat{f}(\lambda)f^(λ)和f^(−λ)\hat{f}(-\lambda)f^(−λ)也是共轭的,也有着和傅里叶级数一样的性质。
所以f^(λ)\hat{f}(\lambda)f^(λ)虽然是一个复函数,但如果把y轴两侧对应起来,即把(−∞,0)(-\infty,0)(−∞,0)折到(0,∞)(0,\infty)(0,∞)上,仍然可以获得一个实函数。
本身,我们知道,λ\lambdaλ对应的物理意义是频率,而负频率是没有意义的。因此对应到一个函数的频谱强度,这应该还是一个实函数,只是用复函数的形式来表达了。
这样做的意义在于eite^{it}eit这个函数有许多有用的计算性质,可以极大地简化许多推导过程。
三、总结
好了,说了这么多,其实就是回答了这样一个问题:为什么fft()的结果是复数?
我会说我写这些是为了学习LaTex语言吗?
傅里叶变换的虚数部分相关推荐
- C语言实现离散余弦变换(DCT)并用MATLAB和Python验证
概念 离散余弦变换(Discrete Cosine Transform,DCT)是可分离的变换,其变换核为余弦函数.是与傅里叶变换相关的一种变换,它相当于把离散傅里叶变换的虚数部分丢掉,只使用实数.D ...
- 信号傅里叶变换后的实数和虚数部分理解
傅里叶(FFT.DFT.傅立叶.Fourier)傅里叶变换的结果为什么含有复数? 为什么傅里叶变换的结果含有复数成份? 看了很多关于FFT的资料,现在看到一个资料说FFT转换的结果是实部+虚部,所以不 ...
- 傅里叶变换之看不懂就掐死我教程
原文出处: 韩昊 1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师, ...
- 深入浅出的讲解傅里叶变换(完整)
原文出处: 韩昊 我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了--于是拖了两年,嗯,我是拖延症患者-- 这篇文章的核心思想就是: 要 ...
- 控制-频域操作-傅里叶级数和傅里叶变换
傅里叶级数和傅里叶变换是什么关系? - 马同学的回答 - 知乎 1.任何一个函数都可以表达成傅里叶级数形式 2.上面的傅里叶级数表达形式 有正弦波,也有余弦波,画频域图也不方便,通过欧拉公式,可以修改 ...
- 基于python的快速傅里叶变换FFT(一)
基于python的快速傅里叶变换FFT(一) FFT可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因. ...
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
原文:http://blog.csdn.net/ikerpeng/article/details/41845545?utm_source=tuicool&utm_medium=referral ...
- Python实现快速傅里叶变换(FFT)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu May 24 21:00:47 201 ...
- VTK修炼之道40:频域处理_快速傅里叶变换及其反变换1
1.图像频域处理的意义 在图像处理和分析中,经常会将图像从图像空间转换到其他空间中,并利用这些空间的特点进行对转换后图像进行分析处理,然后再将处理后的图像转换到图像空间中,这称之为图像变换. 在一些图 ...
最新文章
- HDU1425简单排序题
- 黄仁勋入选《时代》杂志2021最具影响力100人,库克、马斯克也上榜
- python四十九:封装
- github的基础使用
- 面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?
- 2021牛客第一场 I. Increasing Subsequence-前缀和优化dp
- 企业级应用架构(三)三层架构之数据访问层的改进以及测试DOM的发布
- c语言查看cpu温度代码_很多程序员都不知道,C语言中还有“快类型”和“小类型”...
- python fsolve说明_python fsolve说明_Python fsolve()抱怨形状.为什么?
- Eclipse的下载Spring Tool Suite(sts)
- java digester map_Digester学习笔记
- Android APP完整基础教程(01)开发环境简介
- DNS的作用是什么?为什么一定要配置DNS才能上网
- CSS使用小操作(隐藏滚动,实现三角行等...)
- 敲击键盘后字符怎么出现在显示器
- 新版 playCover 键位映射教程(mac 玩 ios 原神键位映射示例)
- 国产银河麒麟系统源码安装Openvas
- C语言初学知识准备(Linux方面)
- spss入门——简单的数据预处理到时间序列分析系列(四)
- Mysql下更改数据库密码