周期信號的傅里葉級數和傅里葉系數如下所示

對於非周期信號,我們也想得到其頻譜,為了得到非周期信號的頻譜,可以將非周期信號可以看作周期無窮大的信號。下圖展示了當一個周期信號的周期不斷增大時,頻譜的變化規律。

可以看到,當周期 \(T\) 增大,譜線高度將減小(這是由於隨着周期增大,信號在時域上變得稀疏,信號的平均功率將減小),取極限后得到的每條譜線的高度都是0。為了解決這個問題,我們將(2)式兩端乘以 \(T\)。我們知道,在離散頻譜中,相鄰兩條譜線的間隔是 \(\Omega\),而 \(T=\frac{2\pi}{\Omega}\),所以將(2)式兩端乘以 \(T\) 就是將譜線除以它所占據的頻帶寬度再乘以\(2\pi\),因此得到的是頻譜密度,如下圖所示。



可以看到,隨着周期增大,密度曲線逐漸趨於光滑,但是曲線的高度不會發生改變。當周期趨於無窮大時,密度曲線變成了完全光滑的曲線。

由於當周期趨於無窮大時,譜線間隔 \(\Omega\) 趨於無窮小,因此諧波頻率 \(n\Omega\) 可以取到實數中的任意頻率,用 \(\omega\) 代替(2)式中的 \(n\Omega\),於是我們得到了非周期信號的傅里葉變換。

根據(1)式可以推導出非周期信號的傅里葉反變換

傅里葉反變換的式子也映證了“傅里葉變換得到的是頻譜密度”這一物理含義
附: 頻譜密度作圖代碼
import numpy as np
import matplotlib.pyplot as plt
tao = 1
T = 4*tao # 通過這一行修改周期大小
Omega = 2*np.pi/T
n_max = int(14/(Omega*tao))+1
def Sa(w):
if w == 0:
sa = 1
else:
sa = np.sin(w)/w
return sa
def F(n):
return (tao/T)*Sa((n*Omega*tao)/2)
omega = []
dense = []
for n in range(-1*n_max,n_max+1):
omega.append(n*Omega-Omega/2)
omega.append(n*Omega)
omega.append(n*Omega+Omega/2)
dense.append(F(n)*2*np.pi/Omega)
dense.append(F(n)*2*np.pi/Omega)
dense.append(F(n)*2*np.pi/Omega)
plt.figure(figsize=(6,2))
plt.plot(omega,dense)
plt.axhline(y=0,color='black')
plt.show()
