C++ 傅里叶变换 推导

傅里叶变换

  在自己对傅里叶变换的不断学习中,逐渐对其有了一些新的理解,新的想法。故在本文中将首先简要介绍一下傅里叶变换的作用,之后对傅里叶变换过程给出自己角度的理解。

1 傅里叶变换的作用

  所谓“横看成岭侧成峰,远近高低各不同”,对于一个事物,我们可能会从各个不同的角度观察,之后得到不同的结果,但其均是对这个事物的正确描述,只是角度不同罢了。我们要确立整体、全面的眼光,不要停留于对事物的表面观察,要能深入下去,以此发掘事物的内部特征。

1.1 时间域和频率域

  首先,我们要对时间域和频率域有一个了解。顾名思义,时间域,就是在时间角度下的信号;频率域,就是在频率角度下的信号。假设现在我说了句话“我和我的祖国一刻也不能分割”,其持续了5秒,那我们现在可以得到一个时间长度为5秒的连续模拟信号(现在是在时间域),之后我们进行采样和量化。

1.2 频率域分析的作用和意义

  好了,现在我们可以利用数字信号分析工具对该信号进行各种分析、处理。在时间域内,我们可以感受到信号幅值的变换,也可以感受到信号频率的变化,既然信号有频率变化,那我们是否可以利用一系列正弦基函数来表示这个信号(不同频率的正弦基函数具有不同的权重)?也就是通过这种方式,我们获取到该信号详细的频率信息。一旦这个功能可以实现,我们就可以从原始信号中分理出不同频率的信息,进行各种滤波、去噪的处理。

2 傅里叶变换的理解

  此处用离散傅里叶变换举例。

2.1 傅里叶变换的实现

傅里叶正变换:


F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − j 2 π ( u x / M + v y / N ) F(u,v)= \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-j2\pi(ux/M+vy/N)} F(u,v)=x=0M1y=0N1f(x,y)ej2π(ux/M+vy/N)


傅里叶反变换:


f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) e j 2 π ( u x / M + v y / N ) f(x,y)= \frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)e^{j2\pi(ux/M+vy/N)} f(x,y)=MN1u=0M1v=0N1F(u,v)ej2π(ux/M+vy/N)

欧拉公式:


e j θ = cos ⁡ θ + j sin ⁡ θ e^{j\theta}=\cos{\theta}+j\sin{\theta} ejθ=cosθ+jsinθ

利用欧拉公式代换后:


正变换:
F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) ( cos ⁡ ( − 2 π ( u x / M + v y / N ) ) + j sin ⁡ ( − 2 π ( u x / M + v y / N ) ) ) F(u,v)= \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)(\cos(-2\pi(ux/M+vy/N))+j\sin(-2\pi(ux/M+vy/N))) F(u,v)=x=0M1y=0N1f(x,y)(cos(2π(ux/M+vy/N))+jsin(2π(ux/M+vy/N)))


反变换:
f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) ( cos ⁡ ( 2 π ( u x / M + v y / N ) ) + j sin ⁡ ( 2 π ( u x / M + v y / N ) ) ) f(x,y)= \frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)(\cos(2\pi(ux/M+vy/N))+j\sin(2\pi(ux/M+vy/N))) f(x,y)=MN1u=0M1v=0N1F(u,v)(cos(2π(ux/M+vy/N))+jsin(2π(ux/M+vy/N)))

2.2 傅里叶变换的分析

为了方便分析,我们利用一维信号来进行说明。


正变换:
F ( u ) = ∑ x = 0 M − 1 f ( x ) ( cos ⁡ ( − 2 π ( u x / M ) ) + j sin ⁡ ( − 2 π ( u x / M ) ) ) F(u)= \sum_{x=0}^{M-1}f(x)(\cos(-2\pi(ux/M))+j\sin(-2\pi(ux/M))) F(u)=x=0M1f(x)(cos(2π(ux/M))+jsin(2π(ux/M)))


F ( u ) = ∑ x = 0 M − 1 ( f ( x ) cos ⁡ ( − 2 π ( u x / M ) + j f ( x ) sin ⁡ ( − 2 π ( u x / M ) ) ) ) F(u)= \sum_{x=0}^{M-1}(f(x)\cos(-2\pi(ux/M)+jf(x)\sin(-2\pi(ux/M)))) F(u)=x=0M1(f(x)cos(2π(ux/M)+jf(x)sin(2π(ux/M))))


反变换:
f ( x ) = 1 M ∑ u = 0 M − 1 F ( u ) ( cos ⁡ ( 2 π ( u x / M ) ) + j sin ⁡ ( 2 π ( u x / M ) ) ) f(x)= \frac{1}{M}\sum_{u=0}^{M-1}F(u)(\cos(2\pi(ux/M))+j\sin(2\pi(ux/M))) f(x)=M1u=0M1F(u)(cos(2π(ux/M))+jsin(2π(ux/M)))


f ( x ) = ∑ u = 0 M − 1 F ( u ) cos ⁡ ( 2 π ( u x / M ) + j F ( u ) sin ⁡ ( 2 π ( u x / M ) ) ) ) f(x)= \sum_{u=0}^{M-1}F(u)\cos(2\pi(ux/M)+jF(u)\sin(2\pi(ux/M)))) f(x)=u=0M1F(u)cos(2π(ux/M)+jF(u)sin(2π(ux/M))))


由上面两个公式可以看出,离散傅里叶变换就是将 f ( x ) f(x) f(x)与不同的正弦基函数做乘积,也可以理解为 f ( x ) f(x) f(x)向不同的正弦基函数做投影。


函数 f ( x ) f(x) f(x)向基函数 g ( x ) g(x) g(x)作投影的定义:


f ( x ) ⋅ g ( x ) = f ( x ) × g ( x ) f(x)\cdot{g(x)}=f(x)\times{g(x)} f(x)g(x)=f(x)×g(x)


函数 f ( x ) f(x) f(x)与函数 g ( x ) g(x) g(x)正交的定义:
∫ − ∞ + ∞ f ( x ) g ( x ) d x = 0 \int_{- \infty}^{+ \infty} f(x)g(x)dx=0 +f(x)g(x)dx=0

2.3 函数投影和向量投影的分析

----函数投影向量投影
定义 f ( x ) ⋅ g ( x ) = f ( x ) × g ( x ) f(x)\cdot{g(x)}=f(x)\times{g(x)} f(x)g(x)=f(x)×g(x) f ( x ) ⋅ g ( x ) = f ( x ) × g ( x ) × cos ⁡ θ f(x)\cdot{g(x)}=f(x)\times{g(x)\times{\cos{\theta}}} f(x)g(x)=f(x)×g(x)×cosθ
方向性函数与基函数方向一致向量与基向量方向多不一致
重建需要进行归一化不需要归一化

至此,本文内容全部结束,有兴趣的可以了解一下本人的角度,欢迎大家在评论区给出自己的建议。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值