从时域和频域来解析傅里叶变换(含代码和性质)

冒泡~十二月啦!艰难的十一月总算是熬过去,十二月希望少熬一点吧(不可能)。
【题外话:傅里叶变换讲道理应该是大一高数就学习,然而当时的老师因为考试不考就放弃了教学,于是乎现在的我学起来真是恶补的痛苦】

傅里叶变换

傅里叶变换实质涉及的是频域函数和时域函数的转换。

概念解释

a.先引入时域和频域这两个概念的解释。

时域

时域是真实世界,是惟一实际存在的域。可以这样理解,从我们出生开始,所接触的这个世界就是随着时间在变化的,是在运动的。

频域

频域它不是真实的,而是一个数学构造。如果说时域是惟一客观存在的域,那么频域是一个遵循特定规则的数学范畴,频域也被一些学者称为上帝视角。结合上面对时域的理解,如果时域是运动永不停止的,那么频域就是静止的。
正弦波是频域中唯一存在的波形,这是频域中最重要的规则,即正弦波是对频域的描述,因为频域中的任何波形都可用正弦波合成
通过图片来直观解释:
在时域里面,一段音乐是什么?是一个随着时间变化的震动(我们可以观察到钢琴的琴弦一会上一会下的摆动)。
相比较,在频域里面,一段音乐又是什么?是一个个音符,是乐谱。音符的个数是有限且固定的,但可以组合出无限多的乐曲。

参考来源:https://zhuanlan.zhihu.com/p/19763358

b.接下来再讲解两个概念 :频谱和相位谱

频谱

在这里先引入一个通俗的解释:


如上图所示:
第一幅图是一个余弦波 cos(x)
第二幅图是 2 个余弦波的叠加 cos (x) +a.cos (3x)
第三幅图是 4 个余弦波的叠加
第四幅图是 10 个余弦波的叠加
那么问题来了:
随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形,那么可以推出什么?
不仅仅是矩形,你能想到的任何波形都是可以如此方法用正弦波叠加起来的。

接下来我们换一个角度来看看:
从侧面看就是矩形波在频域的样子,是不是完全认不出来了?教科书一般就给到这里然后留给了读者无穷的遐想,以及无穷的吐槽,其实教科书只要补一张图就足够了:频域图像,也就是俗称的频谱。

对比展示:

image.png

可以看出,从时域来看,我们会看到一个近似为矩形的波,而我们知道这个矩形的波可以被差分为一些正弦波的叠加。而从频域方向来看,我们就看到了每一个正弦波的幅值,可以发现,在频谱中,偶数项的振幅都是0,也就对应了图中的彩色直线。振幅为 0 的正弦波。
正面--时域图像 侧面--频域图像
动图展示:

相位谱

频谱只代表了一个正弦函数的幅值,而要准确描述一个正弦函数,我们不仅需要幅值,还需要相位,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。
频谱的重点是侧面看,相位谱的重点则是从下面看。


如上图所示:投影点我们用粉色点来表示,红色的点表示离正弦函数频率轴最近的一个峰值,而相位差就是粉色点和红色点水平距离除以周期。将相位差画到一个坐标轴上就形成了相位谱。
【这里需要纠正一个概念:时间差并不是相位差。如果将全部周期看作2Pi或者360度的话,相位差则是时间差在一个周期中所占的比例。我们将时间差除周期再乘2Pi,就得到了相位差。】

傅里叶变换

为什么需要傅里叶变换?
如下图所示:上面我们能看到的仅仅是一个类似正弦波的波形,其幅值在按照一定的规律变化。如何记载这个波形的信息呢?尤其是量化的记载!是很困难的。那么这个时候引入傅里叶变换就可以得到一个频谱(幅值谱),主要包括3、5、7、9次谐波,一目了然!


傅里叶变换是一种信号分析方法,让我们对信号的构成和特点进行深入的、定量的研究。
把信号通过频谱的方式(包括幅值谱、相位谱和功率谱)进行准确的、定量的描述。
这就是傅里叶变换的主要目的。
(具体分析可参考:(https://www.sohu.com/a/224533027_99907714))

公式定义:


可以这样理解,
①为频率域的函数F(ω)表示为时间域的函数f(t)的积分形式
②为时间域的函数f(t)表示为频率域的函数F(ω)的积分

傅里叶变换过程图解:


具体看参考(https://blog.csdn.net/qq_33414271/article/details/79117586)

其他性质
参考:(https://www.cnblogs.com/AndyJee/p/5073281.html)

参考:百度百科

Matlab实现(频谱和相位谱)

%% 二维傅立叶变换
%读取图片
I=imread('Naruto.jpg');
img=rgb2gray(I);
%幅值图和相位谱
%进行傅立叶变换
f=fft2(img);        %傅里叶变换
f=fftshift(f);      %使图像对称,中心化
r=real(f);          %图像频域实部
i=imag(f);          %图像频域虚部
margin=log(sqrt(r.^2+i.^2));      %图像幅度谱,加log便于显示
phase=real(angle(f)*180/pi);     %图像相位谱
figure
subplot(1,3,1),imshow(img),title('源图像');
subplot(1,3,2),imshow(margin,[]),title('图像幅度谱');
subplot(1,3,3),imshow(phase,[]),title('图像相位谱');

参考(https://blog.csdn.net/qq_33414271/article/details/79117586)
(https://ww2.mathworks.cn/help/matlab/math/fouriertransforms.html#responsive_offcanvas)

Ending~在自我理解的基础上完成了资料的搬运是很不容容易了!
十二月加油鸭!

你可能感兴趣的:(从时域和频域来解析傅里叶变换(含代码和性质))