返回介绍

Wave (ℝ)

发布于 2025-01-31 22:20:45 字数 14452 浏览 0 评论 0 收藏 0

日往则月来,月往则日来,日月相推而明生焉。《易传》

振动、振盪

这个世界天天都在振动。地面、空气、海水、机械、人体等等,都是不断振动。

振动、振盪是物理学名词,振动(Vibration)是来回运动,振盪(Oscillation)是来回变化。

震动、震盪是自古以来就有的词彙。

振动可以用函数表示

每个时间点的振动高低,可以描绘成函数图形,横向是时间轴,纵向是每个时刻的振动高低位置。

平稳的振动

最平稳的振动,就是高中物理教的简谐运动,是等速圆周运动在座标轴上的投影,呈现 sin 函数。sin 函数和 cos 函数长相一样,只是起点不同而已。

举例来说,敲打音叉产生的振动,就非常接近平稳的振动。

振动的快慢:频率

单位时间振动的次数,称作“频率 Frequency”。

一秒振动的次数,单位是赫兹 Hz。

人类能感知频率:耳朵能听到 20Hz 至 20000Hz 的空气振动,低频低沉、高频尖锐;眼睛能看到 4×10^14Hz 至 8×10^14Hz 的电磁振盪,低频至高频分别呈现红橙黄绿蓝靛紫。

振动的高低:振幅

振动的最高(低)距离,称作“振幅 Amplitude”。

人类能感知振幅,受频率大小影响。就听觉而言,振幅高则大声、振幅低则小声;就视觉而言,振幅高则亮、振幅低则暗。

题外话,人类对于频率与振幅的区分能力,大略等于取 log。

振动的起点:相位

振动的起点位置,称作“相位 Phase”。

注意到,相位是圆周运动 cos 函数的角度,而不是振动高低位置。物理学家喜欢用相位。

人类几乎分辨不出相位的差异。

振动有叠加效果

现实世界当中,多个振动时常融合成一个振动,等于各个振动高低位置相加。相同方向则增益、相反方向则抵销。

写成数学式子,就是多个函数相加。

振动有传递效果:波

一个粒子振动,就会牵引隔壁粒子振动,一传十、十传百。宏观之下,形成“波 Wave”,亦译“波动 Wave”。

观察任意一个粒子,都是在振动。传递速度取决于粒子之间的作用力、粒子的质量。作用力强、质量小,则传递速度快。

均匀分布的粒子之中,某个粒子振动所产生的波,刚好也呈现 sin 函数,英文称作 sine wave 或者 sinusoid。

水的高低起伏,就是水波。空气的疏密,就是声波。地的高低起伏与左右晃动,就是地震波。电场与磁场的交互作用,就是电磁波。光波经实验证明是电磁波。原子的振动,也许是热。有人觉得气功也许是波,就叫做气功波。

Wave (ℂ)

有物混成,先天地生,寂兮寥兮,独立而不改,周行而不殆,可以为天下母。《老子》

Complex Number

快速複习一下複数吧。实数,再额外考虑 i = √-1,就是複数。例如 2 + 3i、(1 - √2) + (1/3)i、1 / (-2i - 4)、∛i、sin(i)。

只要是複数,都可以重新整理成左边实数不乘 i、右边实数有乘 i,两个部分相加的格式,证明省略之;其中不乘 i 的部分叫做实部(real part),有乘 i 的部分叫做虚部(imaginary part)。例如 1 / (-2i - 4) 可以重新整理成-0.2 + 0.1i,其中实部是-0.2,虚部是 0.1i。

複数亦可以用图形表示。

複数平面、二维平面、极座标平面是不同的事情,不要搞混了。

两个複数相加,就是实部加实部、虚部加虚部。在複数平面上,外观宛如向量相加。

两个複数相乘,就是实乘实、虚乘虚、实乘虚、虚乘实,再累加这四个乘积。在複数平面上,外观宛如长度相乘、角度相加。

一个複数可以重新表示成一个长度与一个角度,叫做极座标表示法。长度可以用毕氏定理求得,角度可以用 arctan 函数求得。

一个长度与一个角度也可以还原成一个複数。实部可以用 cos 函数求得,虚部可以用 sin 函数求得。

附带一提,长度也有人称作强度(magnitude),角度也有人称作相位(phase)。

Euler's Formula

强者欧拉发现这世界上有一个神奇数字 e,e 的纯虚数次方竟然在複数平面上绕圈儿。这真是一个超乎常理的发现!

写成数学公式是:e = cosθ + i * sinθ,複数的长度是常数 1,複数的角度是变数θ。等式右边,是将长度 1 与角度θ,还原成一个複数 cosθ + i * sinθ,外观很複杂但是本质很简单。

有了欧拉公式,一个複数也可以重新表示成 e 的次方、另乘上倍率。次方值即是角度乘 i,倍率即是长度。

欧拉公式,定量增加θ,在複数平面上,外观宛如“等速圆周运动”,逆时针绕圈;只看实部或者只看虚部,外观宛如“简谐运动”,先上后下。

绕 360°是一圈,刚好回到+1;绕 180°是半圈,刚好是-1。因此有了 e + 1 = 0 这条著名等式,π就是 180°。

e运算简单,考虑长度与角度即可。e性质优美,每转 90°刚好是±1 与±i。也许你会渐渐爱上它。

这个 e,大约是 2.71828183,是自然对数的底数 e,是 1/x 积分后所出现的 e。离题了。

Wave

因为 e跟波很像,所以可以用 e来表示波。实数系统的波,推广成为複数系统的波。

複数系统的 e波,欲降格为实数系统的 sin 波、cos 波,有两种方式。观察 e = cosθ + i * sinθ这道式子:

一、取实部得到 cos 波、取虚部得到 sin 波。即是俯瞰和侧视。

二、用 e与 e-iθ,相加除以二得到 cos 波,相减除以二得到 sin 波。

Fourier Transform

Fourier Transform 输入输出

傅立叶转换是一对一函数,输入输出都是一串複数,可以是连续函数或者离散数列,各有对应名称。混淆视听罢了。

输入 输出 名称
连续 连续 Fourier Transform
连续 离散 Fourier Series
离散 连续 Discrete-time Fourier Transform
离散 离散 Discrete Fourier Transform

连续到连续的傅立叶转换,输入和输出都是一个ℝ ⇨ ℂ函数。(ℝ ⇨ ℂ函数很难画,故图例为实数函数。)

离散到离散的傅立叶转换,输入和输出都是一串複数数列。离散版本是连续版本的特例:输入输出是週期函数、等距取样。(複数数列很难画,故图例为实数数列。)

电脑做运算,数值皆离散。本篇只介绍离散版本。

Fourier Transform 物理意义

N 个複数波,频率是 0 倍到 N-1 倍,分别是 ei⋅(2π/N)⋅0⋅θ、ei⋅(2π/N)⋅1⋅θ、……、ei⋅(2π/N)⋅(N-1)⋅θ。写成代数是 ei⋅(2π/N)⋅n⋅θ。(複数波很难画,故图例为实数波。)

输入数列与一个波,N 个对应位置点对点相除、再求总和,得到一个输出数值。可以简单想做:输入数列除以波,求比例。

(学过线性代数的读者,也可以想做点积、投影。)

输入数列,分别除以 N 个波,得到 N 个输出数值,形成输出数列。这就是傅立叶转换。

正向傅立叶转换,是把一个複杂的波,拆解成 N 个平稳的波,频率是 0 倍到 N-1 倍,强度与相位是 N 个输出数值的强度与相位。

逆向傅立叶转换,是把 N 个平稳的波,频率是 0 倍到 N-1 倍,分别乘上强度、加上相位,再叠加成一个複杂的波。

Fourier Transform 数学公式

傅立叶转换
       N-1
y[n] =  ∑ { x[k] ÷ ei⋅(2π/N)⋅n⋅k } ÷ sqrt(N)
       k=0
       N-1
     =  ∑ { x[k] ⋅ e-i⋅(2π/N)⋅n⋅k } ÷ sqrt(N)
       k=0

傅立叶转换的反函数,称作逆向傅立叶转换
       N-1
x[n] =  ∑ { y[k] ⋅ ei⋅(2π/N)⋅n⋅k } ÷ sqrt(N)
       k=0

为了加快计算速度,正向傅立叶转换经常改成不除以 sqrt(N),逆向傅立叶转换经常改成多除以 sqrt(N)。

       N-1
y[n] =  ∑ { x[k] ÷ ei⋅(2π/N)⋅n⋅k }
       k=0
       N-1
x[n] =  ∑ { y[k] ⋅ ei⋅(2π/N)⋅n⋅k } ÷ N
       k=0

傅立叶转换是线性变换,其矩阵恰是正规正交矩阵。

ω = ei⋅2π/N

[y0  ]   [ ω-0⋅0     ω-0⋅1     ω-0⋅2     ..  ω-0⋅(N-1)     ]  [x0  ]
[y1  ]   [ ω-1⋅0     ω-1⋅1     ω-1⋅2     ..  ω-1⋅(N-1)     ]  [x1  ]
[y2  ] = [ ω-2⋅0     ω-2⋅1     ω-2⋅2     ..  ω-2⋅(N-1)     ]  [x2  ]
[:   ]   [ :         :         :             :            ]  [:   ]
[yN-1]   [ ω-(N-1)⋅0 ω-(N-1)⋅1 ω-(N-1)⋅2 ..  ω-(N-1)⋅(N-1) ]  [xN-1]

[x0  ]       [ ω0⋅0     ω0⋅1     ω0⋅2     ..  ω0⋅(N-1)     ]  [y0  ]
[x1  ]    1  [ ω1⋅0     ω1⋅1     ω1⋅2     ..  ω1⋅(N-1)     ]  [y1  ]
[x2  ] = --- [ ω2⋅0     ω2⋅1     ω2⋅2     ..  ω2⋅(N-1)     ]  [y2  ]
[:   ]    N  [ :        :        :            :           ]  [:   ]
[xN-1]       [ ω(N-1)⋅0 ω(N-1)⋅1 ω(N-1)⋅2 ..  ω(N-1)⋅(N-1) ]  [yN-1]

複数波,变成离散数列,可以画成这样子:

傅立叶转换的矩阵,可以画成这样子:

演算法(公式解)

依照公式实作,时间複杂度是 O(N^2)。

Fourier Transform 的性质

Frequency Spectrum

傅立叶转换,输出数列有 N 个複数,可以画成函数。一般不画实部与虚部,而是画长度与角度,具备物理意义。

这 N 个複数的长度(强度)画成函数,称为“强度频谱”。

这 N 个複数的角度(相位)画成函数,称为“相位频谱”。

两者合称为“频谱”。

附带一提,当输入数列皆是实数,则输出数列将共轭对称:长度(强度)相等、角度(相位)负号。教科书为了让图片美观,经常循环位移令中央为低频、画成折线图、强度 取 log10 。读者要注意!

我们得以运用正向傅立叶转换分解一个波,运用逆向傅立叶转换合成一个波,运用频谱解读波的详细内容。傅立叶转换是一对一函数,一种波对应一种频谱。频谱的左侧到右侧,是低频到高频。

甚至可以把一个波实施正向傅立叶转换,将低频数值或者高频数值改成零,再实施逆向傅立叶转换,改造原本的波。这是十分常用的技巧。

频谱是非常实用的分析工具。凡是学习科学的人,都有必要了解频谱!各种物质的振动或振盪,皆可求得频谱,发掘其特性。例如震谱是震波的频谱,光谱是光波的频谱,声谱是声波的频谱。世间万物皆有谱,应用无限广泛。

解读频谱

范例:一条实数数列,16 个数字,实施傅立叶转换,得到频谱。

起点是 1,平稳振动 1 次,振幅为 1,形成 cos 波:对应傅立叶转换的一倍频率波,频谱第一点的强度是 8、相位是 0,其馀的强度和相位是 0。

起点调成 0,也就是相位调成-π/2:依然对应傅立叶转换的一倍频率波,强度依旧,相位是-π/2。

平稳振动调成 2 次:对应傅立叶转换的两倍频率波,频谱第二点的强度是 8、相位是-π/2,其馀的强度和相位是 0。

振幅调成 2:强度变两倍。

振动基准从 0 调成 1:对应傅立叶转换的零倍频率波,其功效是数列总和,频谱第零点的强度变 16。

频谱的缺点(一)

问题来了。平稳振动 1.5 次,频谱如何?

你可能马上联想到“加权平均值”的概念,第一点和第二点有强度,强度各半。

但是事实并非如此。1.5 倍,频谱呈现“人”型,所有频率皆有强度,漏得到处都是。这个现象称作“spectral leakage”。

这个现象有两种解读:

一、1 倍和 2 倍频率波,叠加(加权平均值)之后,结果是 1 倍,不是 1.5 倍。更明确来说是最大公因数。

傅立叶转换的 0 倍频率波到 n-1 倍频率波,皆无法组合出 1.5 倍。只好凑合各种频率,尽量趋近 1.5 倍。

二、离散版本的傅立叶转换,输入输出是循环数列。1.5 倍,循环之后,其实不是平稳的振动,因而产生许多高频波。

当振动次数不是整数次、频率不是整数倍,那麽傅立叶转换无法精准量测!这是重大缺点!

Window Function

然而数学家尚未发明更好的方式。当今主流仍是傅立叶转换。

为了克服 spectral leakage 这个重大缺点,数学家想出了“窗函数”。

原本数列,乘上一个窗函数:中央高、两端趋近零的数列。如此令原本数列左右两端连续,抑制频谱多馀强度。

窗函数非常多种,功效略有差异。请读者自行研究。

Fourier Cosine Transform

Fourier Cosine Transform / Fourier Sine Transform

複数波太前卫,实数波仍有人用。cos 波和 sin 波都有人用,cos 波比较常见。

傅立叶馀弦转换是一对一函数,输入和输出都是一串实数,可以是连续函数或者离散数列,各有对应名称。

输入 输出 名称
连续 连续 Fourier Cosine Transform
连续 离散 Fourier Cosine Series
离散 连续 似乎没有名称
离散 离散 Discrete Cosine Transform

遇到不连续函数容易失真,例如 Gibbs Phenomenon。读者可自行寻找资料。

Lapped Transform

https://en.wikipedia.org/wiki/Modified_discrete_cosine_transform

Fourier Bessel Transform(Under Construction!)

複数波改成 Bessel 函数。

Cylindrical Harmonics

Spherical Harmonics

http://people.csail.mit.edu/sparis/sh/index.php?img=64

Zernike Polynomials

Fourier Ramanujan Transform

http://perso.ens-lyon.fr/patrick.flandrin/NewOrl2.pdf

複数波改成 Ramanujan Sum。

norm 从 N 改成φ(n)。垂直是互质。逆转换需要定义无限长数列的内积。

Laplace Transform

拉普拉斯转换是傅立叶转换的进化版本。有两个地方不同:

一、e-i⋅(2π/N)⋅n⋅k的次方值,改成任意複数。

次方值的实部,影响振幅;次方值的虚部,影响相位、频率。

傅立叶转换是振幅为 1、相位为 0、频率为定值,平稳振动的波;拉普拉斯转换是振幅频率相位会变动的波(其中一例是 Bessel 函数),穷举所有变动方式。

二、积分起点-oo,改成 0。

傅立叶转换处理负索引值;拉普拉斯转换不处理负索引值,符合真实世界常见情况。

Wavelet

Wavelet Transform

http://en.wikipedia.org/wiki/Wavelet

Linear Canonical Transform

http://en.wikipedia.org/wiki/Linear_canonical_transformation

Gyrator Transform
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=7112636

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文