从零开始傅里叶变换
1.前言
傅里叶变换是很多领域的基础工具,常用来做频域变换。但凭什么傅里叶变换可以转换至频域,又什么是频域。看门见山。
连续傅里叶变换公式:
F ( w ) = < f ( t ) , e i w t > = ∫ − ∞ ∞ f ( t ) e − i w t d t (1.1) F(w) = <f(t),e^{iwt}>=\int_{-\infty}^{ \infty}f(t)e^{-iwt}dt\tag{1.1} F(w)=<f(t),eiwt>=∫−∞ ∞f(t)e−iwtdt(1.1)
单单看这个公式确实让人头大。还好鲁迅说过把复杂的问题拆分成各个简单的问题,解决完简单的问题,再和起来,就解决了复杂的问题。
根据上图,我们就可得出,傅里叶变换是
原信号 f ( t ) f(t) f(t)和 e i w t e^{iwt} eiwt的内积= F ( w ) F(w) F(w)(即原信号在角频率w上的分量)
等价于
原信号f(t)与 e − i w t e^{-iwt} e−iwt在所有时间上的积分。
我们现在这里给出最终结论:
傅里叶变换的本质就是内积,而内积的对象是由同频三角函数组成的 e i w t e^{iwt} eiwt。通过与 e i w t e^{iwt} eiwt的内积(投影),分离出角频率为w的分量,而 ∫ − ∞ ∞ \int_{-\infty}^{ \infty} ∫−∞ ∞就是将信号每个时刻的w的分量叠加(即振幅)。
为什么和 e i w t e^{iwt} eiwt一参合就到频域上了。我们继续一步步拆开 e i w t e^{iwt} eiwt看看它到底意味着什么?
2. e i w t e^{iwt} eiwt的秘密
2.1 从e说起
e是自然常数,等于2.718281828459。好奇心又来了,为什么这个叫自然常数呢,这个2.71828…怎么看都不自然啊?先甩大招:
e的定义式为:
lim n → ∞ ( 1 1 n ) n = e (2.1.1) \lim\limits_{n \to \infty}(1 \frac {1} {n})^n=e \tag{2.1.1} n→∞lim(1 n1)n=e(2.1.1)
公式表明当n趋于无穷大的时候 ( 1 1 n ) n (1 \frac {1} {n})^n (1 n1)n等于e。哦吼,这有什么特殊含义嘛?
举个栗子,我在银行存了1元钱,年利率100%数学表达式为
( 1 100 % 1 ) 1 = 2 元 (1 \frac{100\%}{1})^1=2元 (1 1100%)1=2元
但是一想,好像有点亏,我放了一年就计算一次利息,如果要是每月结一次利息就好了,利滚利就更多了,那就是
( 1 100 % 12 ) 12 = 2.613 元 (1 \frac{100\%}{12})^{12} =2.613元 (1 12100%)12=2.613元
让我们更贪婪一点,要是每天算一次,每小时算一次,甚至时时刻刻都算一次,那能拿多少
lim n → ∞ ( 1 1 n ) n = e \lim\limits_{n \to \infty}(1 \frac {1} {n})^n=e n→∞lim(1 n1)n=e
哦豁,就是e了。
从每年算一次,到每时每刻算,是从离散到连续的过程。而在大千世界中,事物都是动态连续变化的,系统的此时的变量会参与到下一时刻的变化。
式(2.11)说明一个单位状态量的变化率是固定100%的系统,e代表了在一个单位时间内,连续的翻倍增长所能达到的极限值。
那如果变化率没那么巧,是100%呢?不妨设年利率是x,式(2.1.1)即为
lim n → ∞ ( 1 x n ) n = lim n → ∞ ( ( 1 1 n / x ) n / x ) x = e x (2.1.2) \lim\limits_{n \to \infty}(1 \frac {x} {n})^n=\lim\limits_{n \to \infty}((1 \frac {1} {n/x})^{n/x} )^x=e^x \tag{2.1.2} n→∞lim(1 nx)n=n→∞lim((1 n/x1)n/x)x=ex(2.1.2)
由上可得,一个单位状态量的变化率是固定值的系统,其状态就可以用自然常数的指数函数来表示。
前面我们考虑的都是单位时间,我们再把时间加入考虑范围,设时间为t,则:
f ( t ) = e x t (2.1.3) f(t) =e^{xt} \tag{2.1.3} f(t)=ext(2.1.3)
哈哈哈,好了,我们发现和 e i w t e^{iwt} eiwt是令x=iw,让我们继续往下看。
2.2 i复数的几何意义
我们都知道 1 ∗ ( − 1 ) = − 1 ; 1 ∗ ( − 1 ) ∗ ( − 1 ) = 1 1*(-1)=-1;1*(-1)*(-1)=1 1∗(−1)=−1;1∗(−1)∗(−1)=1。引入几何学,画出下图:
可以发现,在上图中,*(-1)在几何中,等价于逆时针旋转180度。那好奇猫肯定要问了,如果我偏要旋转90度呢?
旋转180度等于 ∗ ( − 1 ) *(-1) ∗(−1)为已知条件。我们设i为旋转90度需要乘的数。
即我们旋转180度,需要乘2次i,可得 1 ∗ i ∗ i = − 1 1*i*i =-1 1∗i∗i=−1。
化简得
i = − 1 2 (2.2.1) i=\sqrt[2]{-1}\tag{2.2.1} i=2−1 (2.2.1)
画图得
如此一来,我们构建出了一个2维坐标系,好玩的就变多了。
以前我们表达一个二维平面点需要2个数(x,y),但是现在用上i后,我们发现一个复数就可以表示一个点的位置。
一个数表示原来2个数因此称这个数为复数。
2.3 e i x = c o s ( x ) i s i n ( x ) e^{ix}=cos(x) isin(x) eix=cos(x) isin(x) 欧拉!
前面的文章我们讲到e,i这两个神奇的数字,但并未说明他们有什么关联。历史告诉我们,当世界支离破碎的时候,常常就会天降猛男。同理这时候,欧拉来了,带来了欧拉公式:
e i x = c o s ( x ) i s i n ( x ) (2.3.1) e^{ix} = cos(x) isin(x)\tag{2.3.1} eix=cos(x) isin(x)(2.3.1)
关于欧拉公式通过泰勒级数的推导,可以看下面的文章
https://baijiahao.百度.com/s?id=1681031751212927869&wfr=spider&for=pc
下面通过直观的图形化过程进行讲解。
e i x = lim n → ∞ ( 1 i x / n ) n (2.3.2) e^{i x}=\lim _{n \rightarrow \infty}(1 i x / n)^{n} \tag{2.3.2} eix=n→∞lim(1 ix/n)n(2.3.2)
通过matlab绘制公式2.3.2图
x = 0:10:1000; %任意值
n = 10000000000; %n趋于无穷大
e_ix =(1 x* i./n).^n; %计算e_ix值
compass(e_ix); %画出罗盘图
得到
由图可得,无论x为任何值, e i x e^{i x} eix为单位圆(以原点为圆心,半径为1的圆)上的一点。
由此,我们可以得出下图
同理可得, c o s ( x ) i s i n ( x ) cos(x) isin(x) cos(x) isin(x)为复平面上的一点,或者表示为以0为起点的一个向量。
因此,傅里叶公式中的 e i w t e^{iwt} eiwt即等价为 c o s ( w t ) i ∗ s i n ( w t ) cos(wt) i*sin(wt) cos(wt) i∗sin(wt)的向量,模长为1,相位为 w t wt wt。
2.4 <>内积
接着我们继续理解内积的意义。内积用于向量的计算,以向量 a ⃗ = ( 1 , 2 ) , b ⃗ = ( 1 , 0 ) \vec{a}=(1,2),\vec{b}=(1,0) a =(1,2),b =(1,0)为例:
< ( 1 , 2 ) , ( 1 , 0 ) > = ∣ ( 1 , 2 ) ∣ ∗ ∣ ( 1 , 0 ) ∣ ∗ c o s ( θ ) = 1 ∗ 1 2 ∗ 0 = 1 <(1,2),(1,0)> = |(1,2)|*|(1,0)|*cos(\theta) =1*1 2*0 = 1 <(1,2),(1,0)>=∣(1,2)∣∗∣(1,0)∣∗cos(θ)=1∗1 2∗0=1
其几何含义为向量 a ⃗ \vec{a} a 在向量 b ⃗ \vec{b} b 上的投影,内积的结果即为系数。如果2个向量夹角为90度,则 c o s ( θ ) = 0 cos(\theta)=0 cos(θ)=0,其内积为0,即2个向量正交。
同理如果将向量扩展至n维,则其内积为
< a ⃗ , b ⃗ > = a 1 ∗ b 1 a 2 ∗ b 2 . . . a n ∗ b n = ∑ i = 1 n ( a i ∗ b i ) <\vec{a},\vec{b}> =a_1*b_1 a_2*b_2... a_n*b_n = \sum_{i=1}^{n}(a_i*b_i) <a ,b >=a1∗b1 a2∗b2... an∗bn=i=1∑n(ai∗bi)
继续将其扩展至函数,函数是连续的,连续(即dx趋于无穷小)的累加为积分。令 a = f ( x ) , b = g ( x ) a = f(x),b = g(x) a=f(x),b=g(x)
< a , b > = ∫ − ∞ ∞ f ( x ) ∗ g ( x ) ∗ d x (2.4.1) <a,b> =\int_{-\infty}^{ \infty}f(x)*g(x)*dx\tag{2.4.1} <a,b>=∫−∞ ∞f(x)∗g(x)∗dx(2.4.1)
继续扩展至复函数, i = ( − 1 ) 0.5 i=(-1)^{0.5} i=(−1)0.5,复平面上的向量 a = 1 i a=1 i a=1 i则
< a , a > = ∣ 1 i ∣ ∗ ∣ 1 1 i ∣ ∗ c o s ( θ ) = 1 ∗ 1 − i ∗ i = 1 ∗ 1 i ∗ ( − i ) = 2 <a,a> = |1 i|*|1 1i|*cos(\theta) =1*1 - i*i =1*1 i*(-i) =2 <a,a>=∣1 i∣∗∣1 1i∣∗cos(θ)=1∗1−i∗i=1∗1 i∗(−i)=2
由于复平面上 i = ( − 1 ) 0.5 i=(-1)^{0.5} i=(−1)0.5,为了保证内积结果为正数,即保证投影的结果为正。内积计算需将虚部部分变为相减,等价于其中一个向量取共轭( a ⃗ = 1 i \vec{a}=1 i a =1 i取共轭为 a ‾ = 1 − i \overline{a} =1-i a=1−i)。
同理,推广至复函数,设a,b为复函数,则内积计算为
< a , b > = ∫ − ∞ ∞ f ( x ) ∗ g ( x ) ‾ ∗ d x (2.4.2) <a,b> =\int_{-\infty}^{ \infty}f(x)*\overline{g(x)}*dx\tag{2.4.2} <a,b>=∫−∞ ∞f(x)∗g(x)∗dx(2.4.2)
因此我们设信号函数为 f ( t ) , g ( t ) ‾ = e i w t f(t),\overline{g(t)}=e^{iwt} f(t),g(t)=eiwt,则函数内积为
< f ( t ) , e i w t > = ∫ − ∞ ∞ f ( t ) e − i w t d t (2.4.3) <f(t),e^{iwt}>=\int_{-\infty}^{ \infty}f(t)e^{-iwt}dt\tag{2.4.3} <f(t),eiwt>=∫−∞ ∞f(t)e−iwtdt(2.4.3)
式2.4.2,如果大家还记得的话,就是文章开头的公式。
我们推导得到了傅里叶变换的含义是信号 f ( t ) f(t) f(t)与 e i w t e^{iwt} eiwt的内积。2.3的部分我们得到了 e i w t = c o s ( w t ) i ∗ s i n ( w t ) e^{iwt} = cos(wt) i*sin(wt) eiwt=cos(wt) i∗sin(wt), e i w t e^{iwt} eiwt是复平面上的单位向量。
因此,傅里叶公式的直观意义就是信号 f ( t ) f(t) f(t)在复平面上任一单位向量 e i w t e^{iwt} eiwt的投影,结果为其系数。
至此,我们关于傅里叶变换的问题变为 为什么选择在 e i w t e^{iwt} eiwt上做投影,又为什么和频域挂上钩的?
2.5 三角函数的妙用
三角函数( s i n , c o s sin,cos sin,cos)是完备的正交函数集。什么意思呢?
三角函数系为:
{ s i n ( 0 x ) , c o s ( 0 x ) , s i n ( x ) , c o s ( x ) , s i n ( 2 x ) , c o s ( 2 x ) , . . . . , s i n ( n x ) , c o s ( n x ) } \{sin(0x),cos(0x),sin(x),cos(x),sin(2x),cos(2x),....,sin(nx),cos(nx)\} {sin(0x),cos(0x),sin(x),cos(x),sin(2x),cos(2x),....,sin(nx),cos(nx)}
完备的正交函数集的意思为在上述集合中,任选2个元素,其内积为0,即正交。比如:
< c o s ( 0 x ) , c o s ( x ) > = ∫ − π π c o s ( 0 x ) ∗ c o s ( x ) d x = ∫ − π π 1 d x ∫ − π π c o s ( x ) d x = 0 <cos(0x),cos(x)> = \int_{-\pi}^{\pi}cos(0x)*cos(x) dx= \int_{-\pi}^{\pi}1dx \int_{-\pi}^{\pi}cos(x)dx=0 <cos(0x),cos(x)>=∫−ππcos(0x)∗cos(x)dx=∫−ππ1dx ∫−ππcos(x)dx=0
s i n ( w t ) , c o s ( w t ) sin(wt),cos(wt) sin(wt),cos(wt)函数随着w的变化,频率发生变化。根据上述定义,可得,不同频率的三角函数内积为0,只有频率相等的三角函数做内积时,才不为0。
通过 e i w t = c o s ( w t ) i ∗ s i n ( w t ) e^{iwt} = cos(wt) i*sin(wt) eiwt=cos(wt) i∗sin(wt)不难发现, e i w t e^{iwt} eiwt由同频率的三角函数相加组成。至此我们可以直观的看出,信号 f ( t ) f(t) f(t)与 e i w t e^{iwt} eiwt的内积,只有信号 f ( t ) f(t) f(t)与 e i w t e^{iwt} eiwt同频的分量才会有内积的结果,其余分量内积为0。
傅里叶变换的本质就是内积,而内积的对象是由同频三角函数组成的 e i w t e^{iwt} eiwt。通过与 e i w t e^{iwt} eiwt的内积(投影),分离出角频率为w的分量,而 ∫ − ∞ ∞ \int_{-\infty}^{ \infty} ∫−∞ ∞就是将信号每个时刻的w的分量叠加(即振幅)。
通过选择不同的 e i w t e^{iwt} eiwt便可获取信号不同的频率分量。遍历不同的频率,即形成了频谱。
这边还有个小问题, e i w t e^{iwt} eiwt如何与真实的信号频率对应上呢,请看下文。
2.6 傅里叶变换的频率分析
我们通过一个例子来进行讲解。假设我们有个连续信号 f ( t ) = 2 ∗ s i n ( 2 p i ∗ 66.66 ∗ t ) 3 ∗ c o s ( 2 p i ∗ 88.88 ∗ t ) f(t) = 2*sin(2pi*66.66*t) 3*cos(2pi*88.88*t) f(t)=2∗sin(2pi∗66.66∗t) 3∗cos(2pi∗88.88∗t)
频率公式为:
f = 1 / T f = 1/T f=1/T
以 s i n ( 2 p i ∗ 66.66 ∗ t ) sin(2pi*66.66*t) sin(2pi∗66.66∗t)为例,周期为 T = 2 p i / w = 2 p i / ( 2 p i ∗ 66.66 ) = 1 / 66.66 T = 2pi/w = 2pi/(2pi*66.66)=1/66.66 T=2pi/w=2pi/(2pi∗66.66)=1/66.66,因此频率为 f = 1 / T = 66.66 h z f = 1/T =66.66hz f=1/T=66.66hz。同理可得 c o s ( 2 p i ∗ 88.88 ∗ t ) cos(2pi*88.88*t) cos(2pi∗88.88∗t)的频率为 88.88 h z 88.88hz 88.88hz。因此该信号有66.66hz和88.88hz的信号。
接下来进行信号的采集分析。
首先需要设定采样频率,根据奈奎斯特采样定律,采样频率需至少为信号最高频率的2倍。为什么呢,可以直观的理解,根据傅里叶变换可知,获取信号频率的方法,是和 e i w t = c o s ( w t ) i ∗ s i n ( w t ) e^{iwt} = cos(wt) i*sin(wt) eiwt=cos(wt) i∗sin(wt)做内积,而在采样时,要确定信号最高频率的 c o s ( w t ) , s i n ( w t ) cos(wt),sin(wt) cos(wt),sin(wt)的信息,至少需要确定2个点的位置。如下图。同理可得,最终得到的频谱中,有效的频率区间为采样频率的一半。
可以通过这个单位圆来理解采样频率,和采样点数。采样频率代表 e i w t e^{iwt} eiwt在[0,2pi]代表的频率范围,如采样频率为200HZ,即[0,2pi]对应着0-200HZ。而采样点数就是将这0-2pi分成的份数,对应的就是变换的频率。即采样频率,确定频谱的频率范围,采样点数确定频谱的刻度的精细度。比如一把10cm量程(采样频率)的尺子,最高刻度是1cm,那尺子就是将10cm等分成10份(采样点数)。
至此,设定仿真参数为采样频率200HZ,采样点数设为100,matlab仿真代码如下:
%% 参数设置
fs=200; %采样频率
N=100; %采样总数
n=0:N-1; %采样点
t=n/fs; %采样时间间隔
%% 结果计算
y=2*sin(2*pi*66*t) 3*sin(2*pi*88*t); %时域计算
x=fft(y,N); %傅里叶变换
m=abs(x); %振幅取绝对值
f=n*(fs/N); %实际频率换算
%% 绘制结果图
plot(f,m,'-*');
xlabel('频率/Hz');ylabel('振幅');title('N=100');
通过仿真图就可清晰的明白采样频率,和采样点数的意义。随着采样点的增多,频谱分析逐渐精细,最终成功分辨出66.66,和88.88HZ的频率。
2.7 结语
至此,本人已完成自己的第一篇博客。由于为了尽可能的兼顾直观和严谨,难免存在一些纰漏,希望大家不吝赐教!
如果大家需要详细的数学推导,在此推荐B站dr_can博士的相关视频。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkaagh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22