吐槽

最近为了搞毕业设计,学习了一些《信号与系统》的知识,看的我好痛苦:证明的过程绕来绕去,然后就把结论给证明出来了。其中隐含了一些高等数学、线性代数、复变函数、数学分析的知识,隐含的知识有一点多。我感觉我是在学习魔法。所以,想着把学有所得的东西写下来吧。
我感觉把信号从时域转到频域以后,我来到了一个光怪陆离的世界。我只是在总结这一个光怪陆离世界的一些规律,把它写出来方便后来人理解。

之前以为傅里叶变换就是一个连续函数傅里叶变换 android 傅里叶变换公式表图_实时音视频,可以拆分为多个傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_02傅里叶变换 android 傅里叶变换公式表图_实时音视频_03函数的叠加.后来才发现不是这样子的,我理解的是只是傅里叶级数。傅里叶变换,《信号与系统》一共介绍了四种,分别是:

  • 傅里叶级数:从连续到离散的变换
  • 傅里叶变换:从连续到连续的变换
  • 离散傅里叶变换:从离散到连续的变换
  • 离散傅里叶级数:从离散到离散的变换

今天,我先来介绍前面两种,对它进行公式推导。我尽可能写的通俗易懂,尽可能让大家理解。大家不能理解也没有关系。我为了理解傅里叶变换,花了大量时间学习了高等数学、线性代数、复变函数,才明白其中一些背景知识的。也许学习总有一个过程吧,不能一蹴而就、一步登天。受限与我的表达能力,受到了知识诅咒的我,也许真的很难找到一种角度,从很零基础的角度娓娓道来傅里叶变换,但是我会尽力而为。

大家也不要被这满篇数学给吓到。其实我做的事情很低端,一点儿也不高端。文章的核心思想就一个:构造一个理论,把时域的函数转到频域去。其他看起来面目狰狞的函数公式、满篇的数学其实都是纸老虎。把握核心思想就可以了。

让我们开始吧!

假设

//一些隐含的假设就写在这里,后期记得删掉

  • 我是为了项目《声场》学习的《信号与系统》。所以接下来我会站在计算机的角度理解它
  • 傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_04是一个被设计的常数。一般来讲越小越好。但是傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_04越小性能消耗越严重
  • 最小正周期傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_06被称之为基波周期。傅里叶变换 android 傅里叶变换公式表图_实时音视频_07
  • 函数傅里叶变换 android 傅里叶变换公式表图_音视频_08是周期函数。最小正周期是傅里叶变换 android 傅里叶变换公式表图_实时音视频_09。当你调整傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_04是,最小正周期变为傅里叶变换 android 傅里叶变换公式表图_音视频_11

基础知识

正交基函数

存在以下事实:

  • 傅里叶变换 android 傅里叶变换公式表图_实时音视频_12
    傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_13
    (注:推导的时候注意:傅里叶变换 android 傅里叶变换公式表图_算法_14
  • 傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_15
    傅里叶变换 android 傅里叶变换公式表图_算法_16
    其中,傅里叶变换 android 傅里叶变换公式表图_算法_17
  • 傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_18
  • 傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_19
    傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_20

上面六条积分等式可以概括为这样子的一句话:

从以下多个函数中任取两个不重复的函数,相乘,然后再从0到傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_06积分,其结果都为0.
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_22
傅里叶变换 android 傅里叶变换公式表图_实时音视频_23

傅里叶级数

什么是傅里叶级数?

傅里叶级数讲的是,对于任意一个函数傅里叶变换 android 傅里叶变换公式表图_实时音视频,可以拆分为多个sin、cos函数的叠加:

傅里叶变换 android 傅里叶变换公式表图_音视频_25

其中傅里叶变换 android 傅里叶变换公式表图_实时音视频_26都是系数

不要被这个公式吓到!从感性上理解,就是”“对于任意一个函数傅里叶变换 android 傅里叶变换公式表图_实时音视频,可以用很多个傅里叶变换 android 傅里叶变换公式表图_实时音视频_03傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_02函数的相加的形式来表示”。只不过傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_02傅里叶变换 android 傅里叶变换公式表图_实时音视频_03的系数傅里叶变换 android 傅里叶变换公式表图_音视频_32傅里叶变换 android 傅里叶变换公式表图_音视频_33系数不同罢了。

怎么确定系数B0?

公式(1)可以改写为:
傅里叶变换 android 傅里叶变换公式表图_算法_34
其中傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_35是系数,傅里叶变换 android 傅里叶变换公式表图_算法_36,傅里叶变换 android 傅里叶变换公式表图_实时音视频_37是一个被设计的常数。

对公式(2)两边积分,可以得到:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_38
由于有:傅里叶变换 android 傅里叶变换公式表图_音视频_39,于是
傅里叶变换 android 傅里叶变换公式表图_实时音视频_40
傅里叶变换 android 傅里叶变换公式表图_算法_41
其中
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_42
傅里叶变换 android 傅里叶变换公式表图_实时音视频_43
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_44

  • 对于傅里叶变换 android 傅里叶变换公式表图_音视频_45,由微积分的知识,易知:傅里叶变换 android 傅里叶变换公式表图_实时音视频_46
  • 对于傅里叶变换 android 傅里叶变换公式表图_音视频_47,由正交性可知,易知:傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_48 (注:傅里叶变换 android 傅里叶变换公式表图_音视频_49)
  • 对于傅里叶变换 android 傅里叶变换公式表图_音视频_50,由正交性可知,易知:傅里叶变换 android 傅里叶变换公式表图_实时音视频_51 (注:傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_52)

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_53
傅里叶变换 android 傅里叶变换公式表图_音视频_54
傅里叶变换 android 傅里叶变换公式表图_算法_55
傅里叶变换 android 傅里叶变换公式表图_实时音视频_56
所以,傅里叶变换 android 傅里叶变换公式表图_算法_57
至此,系数傅里叶变换 android 傅里叶变换公式表图_音视频_58被确定了

怎么确定系数Bk?

注意事项

  • 傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_59是一个由傅里叶变换 android 傅里叶变换公式表图_算法_60开始的正整数
  • 你可以认为,傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_59是从傅里叶变换 android 傅里叶变换公式表图_实时音视频_62里面任取的一个正整数。比如说傅里叶变换 android 傅里叶变换公式表图_算法_63
  • 取完任意一个正整数,比如说傅里叶变换 android 傅里叶变换公式表图_算法_63后,与函数傅里叶变换 android 傅里叶变换公式表图_算法_65相乘然后再积分:傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_66
  • 傅里叶变换 android 傅里叶变换公式表图_实时音视频_67是一个由傅里叶变换 android 傅里叶变换公式表图_算法_60开始的,连续变化的正整数

同样的,对于任意函数傅里叶变换 android 傅里叶变换公式表图_实时音视频:
傅里叶变换 android 傅里叶变换公式表图_算法_70

对公式(2)两边乘以傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_71

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_72
傅里叶变换 android 傅里叶变换公式表图_算法_73

然后对公式两边积分,可得:
傅里叶变换 android 傅里叶变换公式表图_音视频_74
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_75

公式太长了。公式是由三个部分构成的。先把公式拆分为三个部分。设傅里叶变换 android 傅里叶变换公式表图_音视频_76
其中
傅里叶变换 android 傅里叶变换公式表图_实时音视频_77
傅里叶变换 android 傅里叶变换公式表图_算法_78
傅里叶变换 android 傅里叶变换公式表图_实时音视频_79


对于傅里叶变换 android 傅里叶变换公式表图_音视频_32,由正交性可知,傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_81
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_82
傅里叶变换 android 傅里叶变换公式表图_实时音视频_83
傅里叶变换 android 傅里叶变换公式表图_音视频_84


对于傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_85,已知:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_86
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_87

把这个傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_85展开,可以得到:
傅里叶变换 android 傅里叶变换公式表图_音视频_89
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_90
傅里叶变换 android 傅里叶变换公式表图_实时音视频_91
傅里叶变换 android 傅里叶变换公式表图_音视频_92
傅里叶变换 android 傅里叶变换公式表图_音视频_93 (注意这里傅里叶变换 android 傅里叶变换公式表图_实时音视频_94)
傅里叶变换 android 傅里叶变换公式表图_音视频_92
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_96

结合分析可知,只有当傅里叶变换 android 傅里叶变换公式表图_算法_97时,才有数值.其余项积分为0.

于是:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_98
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_99


对于傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_100,把这个傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_100展开,可以得到:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_102

傅里叶变换 android 傅里叶变换公式表图_音视频_103
傅里叶变换 android 傅里叶变换公式表图_音视频_104
傅里叶变换 android 傅里叶变换公式表图_算法_105
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_106

傅里叶变换 android 傅里叶变换公式表图_实时音视频_107
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_108
傅里叶变换 android 傅里叶变换公式表图_音视频_109
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_110

由于傅里叶变换 android 傅里叶变换公式表图_算法_111,所以每一项都为0
于是:傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_112


总结一下:傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_113傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_114。于是,可以得到:
傅里叶变换 android 傅里叶变换公式表图_算法_115
傅里叶变换 android 傅里叶变换公式表图_实时音视频_116

怎么确定系数Ck?

同样的,对于任意函数傅里叶变换 android 傅里叶变换公式表图_实时音视频:
傅里叶变换 android 傅里叶变换公式表图_算法_70

对公式(2)两边乘以傅里叶变换 android 傅里叶变换公式表图_音视频_119,然后积分,可得:
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_120
傅里叶变换 android 傅里叶变换公式表图_实时音视频_121

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_113
其中
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_123
傅里叶变换 android 傅里叶变换公式表图_算法_124
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_125

对于傅里叶变换 android 傅里叶变换公式表图_音视频_32,由正交性可知,傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_127
对于傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_85,由正交性可知,傅里叶变换 android 傅里叶变换公式表图_实时音视频_129

对于傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_100,已知:
傅里叶变换 android 傅里叶变换公式表图_算法_131
傅里叶变换 android 傅里叶变换公式表图_算法_132

把这个傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_100展开,可以得到:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_134
傅里叶变换 android 傅里叶变换公式表图_实时音视频_135
傅里叶变换 android 傅里叶变换公式表图_音视频_92
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_137
傅里叶变换 android 傅里叶变换公式表图_音视频_92
傅里叶变换 android 傅里叶变换公式表图_音视频_139

结合分析可知,只有当傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_140时,才有数值.其余项积分为0.

于是:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_141
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_142


总结一下:傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_113傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_114。于是,可以得到:
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_145
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_146

总结

傅里叶变换 android 傅里叶变换公式表图_音视频_147
其中傅里叶变换 android 傅里叶变换公式表图_音视频_39,每一项的系数可由以下公式确定:
傅里叶变换 android 傅里叶变换公式表图_算法_149

傅里叶级数的复数表达形式

傅里叶公式一共有四条,公式比较多如果用复数来表达,四条公式可以浓缩为2条。
傅里叶变换 android 傅里叶变换公式表图_音视频_150
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_151
其中,傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_152

傅里叶级数的复数表达形式,与原始公式的关系为:
傅里叶变换 android 傅里叶变换公式表图_算法_153
或者,可以写为:
傅里叶变换 android 傅里叶变换公式表图_算法_154

接下来,我来证明一下。我将从右边推到左边。
傅里叶变换 android 傅里叶变换公式表图_音视频_155
傅里叶变换 android 傅里叶变换公式表图_算法_156

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_157

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_158

傅里叶变换 android 傅里叶变换公式表图_实时音视频_159
与傅里叶级数公式对照,可得:
傅里叶变换 android 傅里叶变换公式表图_算法_153
于是可得:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_161
傅里叶变换 android 傅里叶变换公式表图_算法_162
傅里叶变换 android 傅里叶变换公式表图_实时音视频_163
于是原公式得证。

傅里叶变换

温馨提示

  • 傅里叶级数是从连续到离散的变换,而傅里叶变换是从连续到连续的变换
  • 傅里叶变换可以理解为是将傅里叶级数推广到非周期的函数。傅里叶变换 android 傅里叶变换公式表图_实时音视频_164趋近于0,周期傅里叶变换 android 傅里叶变换公式表图_算法_165趋近于无穷,

公式推导

首先,我们定义:
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_166
注:上面两个公式的等价的。意思是积分不一定要从0开始,只要积满一个周期傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_167就可以了。

已知傅里叶级数的复数表达公式,结合上面的定义,可得:

傅里叶变换 android 傅里叶变换公式表图_算法_168
傅里叶变换 android 傅里叶变换公式表图_实时音视频_169代入傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_170
可得:
傅里叶变换 android 傅里叶变换公式表图_算法_171

傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_172
傅里叶变换 android 傅里叶变换公式表图_算法_173
傅里叶变换 android 傅里叶变换公式表图_实时音视频_174

非周期函数傅里叶变换 android 傅里叶变换公式表图_实时音视频可以理解为是一个傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_167无穷大的函数。傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_167无穷大,由于傅里叶变换 android 傅里叶变换公式表图_音视频_39,所以傅里叶变换 android 傅里叶变换公式表图_实时音视频_37无穷小。

所以:
傅里叶变换 android 傅里叶变换公式表图_算法_180(这里绕不过来,建议去看看积分的定义)

总结:

非周期的函数傅里叶变换 android 傅里叶变换公式表图_算法_181的傅里叶变换:

被称为傅里叶变换公式
傅里叶变换 android 傅里叶变换公式表图_实时音视频_182
其记号为(就是一种写法,下同):
傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_183
被称为傅里叶反变换公式
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_184
其记号为:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_185
其中
傅里叶变换 android 傅里叶变换公式表图_算法_181被称为时域、时间域
傅里叶变换 android 傅里叶变换公式表图_实时音视频_187被称为频域、频率域

至此,两种傅里叶变换:傅里叶级数、傅里叶变换推导完毕。
再见!

离散傅里叶变换(Discrete Fourier Transform,DFT)公式如下:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_188
其中,傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_189为原始信号的离散采样值,傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_190为傅里叶变换后的频域信号,傅里叶变换 android 傅里叶变换公式表图_音视频_191为采样点数,傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_192为虚数单位,傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_193为频域的离散采样点。公式中的傅里叶变换 android 傅里叶变换公式表图_傅里叶变换 android_194为旋转因子,可以通过快速傅里叶变换(FFT)算法来高效计算。DFT可以将原始信号从时域转换到频域,从而分析信号的频率成分和能量分布,是信号处理领域中重要的工具。

已知离散傅里叶变化的公式为:

傅里叶变换 android 傅里叶变换公式表图_算法_195

假设已知傅里叶变换 android 傅里叶变换公式表图_音视频_196傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_197傅里叶变换 android 傅里叶变换公式表图_音视频_191个不同的取值,比如,已知:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_199
的值,则我们可以求得傅里叶变换 android 傅里叶变换公式表图_算法_200.
这是因为,由离散傅里叶变化公式,可得:
傅里叶变换 android 傅里叶变换公式表图_音视频_201
傅里叶变换 android 傅里叶变换公式表图_音视频_202
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_203
上述公式的矩阵化表述为:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_204
其中,
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_205

傅里叶变换 android 傅里叶变换公式表图_音视频_206

傅里叶变换 android 傅里叶变换公式表图_音视频_207
对于傅里叶变换 android 傅里叶变换公式表图_算法_208傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_209上两两不相等的数字,可以证明,将矩阵A改写为行列式R,如果行列式R不为0(可以证明该行列式是范德蒙行列式),则对于公式
傅里叶变换 android 傅里叶变换公式表图_实时音视频_204
来说,已知A、C,可以求B。其含义为。第一,就是可以求傅里叶变换 android 傅里叶变换公式表图_算法_200。第二,就是A可逆。进一步的,如果求出来所有的傅里叶变换 android 傅里叶变换公式表图_算法_200,就可以利用离散傅里叶变换求出傅里叶变换 android 傅里叶变换公式表图_音视频_196在所有傅里叶变换 android 傅里叶变换公式表图_音视频_33上的数值。
所以,尽管傅里叶变换 android 傅里叶变换公式表图_音视频_196是一个连续的函数,但是其值在傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_216个离散点上完全确定。所以,对于一个傅里叶变换 android 傅里叶变换公式表图_音视频_191点序列傅里叶变换 android 傅里叶变换公式表图_算法_200,我们可以构建一个离散到离散的傅里叶变换,用N个离散的点来代表其频域。
我们选择如下的傅里叶变换 android 傅里叶变换公式表图_音视频_219(这是前人的想法,可以降低算法时间复杂度):
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_220
这就是离散傅里叶级数(DFS):
其正变换和反变换公式如下:
正变换公式:
傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_221
反变换公式:
傅里叶变换 android 傅里叶变换公式表图_实时音视频_222
其中,傅里叶变换 android 傅里叶变换公式表图_算法_223为虚数单位,傅里叶变换 android 傅里叶变换公式表图_算法_200为原始信号的离散采样值,傅里叶变换 android 傅里叶变换公式表图_音视频_191为采样点数,傅里叶变换 android 傅里叶变换公式表图_傅立叶分析_193为频域的离散采样点,傅里叶变换 android 傅里叶变换公式表图_音视频_227为傅里叶变换后的频域信号。正变换将原始信号从时域转换为频域,而反变换则将频域信号还原回时域。
在矩阵的计算中,涉及到大量的重复计算。如果进一步利用矩阵计算时的中间信息,则可以进一步降低算法的时间复杂度。实验表明,一个8点的离散傅里叶级数算法,可以拆分为两个4点的离散傅里叶级数算法计算结果的线性叠加。同时,一个4点的离散傅里叶级数算法,可以拆分为两个2点的离散傅里叶级数算法计算结果的线性叠加。那么,对于一个长度为N的序列,比如当傅里叶变换 android 傅里叶变换公式表图_实时音视频_228时,也可以不断拆分下去,充分利用已知的计算信息来计算(编程中的“递归”思想),进一步降低算法复杂度。这就是大名鼎鼎的快速傅里叶算法。论述该算法合理性,其篇幅过长,这里按下不表。