一昂灵、離散傅里葉變換(DFT)
離散傅里葉變換的正變換和逆變換:
DFT是將離散信號(hào)分解為一系列離散三角函數(shù)分量,每一個(gè)分量都有對(duì)應(yīng)的幅度眨补、頻率以及相位管削。通過(guò)所有分量疊加,可以得到原離散信號(hào)撑螺。
二、numpy中離散傅里葉變換的幅度譜和相位譜
-
numpy.fft.fft(a, n=None, axis=-1, norm=None)
numpy.fft.fft計(jì)算輸入數(shù)組a的n個(gè)點(diǎn)的離散傅里葉變換实蓬,得到長(zhǎng)度為n的一維復(fù)數(shù)數(shù)組茸俭。每一個(gè)復(fù)數(shù)分量對(duì)應(yīng)三角函數(shù),都可計(jì)算對(duì)應(yīng)三角函數(shù)的幅度调鬓、頻率以及相位。這些所有頻率的三角函數(shù)疊加可以得到原數(shù)組酌伊。幅度為復(fù)數(shù)的模除以采樣點(diǎn)數(shù)n
相位為復(fù)數(shù)的輔角
-
頻率可通過(guò)復(fù)數(shù)在數(shù)組中的位置對(duì)應(yīng)求出(需利用函數(shù)numpy.fft.fftshift調(diào)整復(fù)數(shù)數(shù)組順序腾窝,使得復(fù)數(shù)數(shù)組對(duì)應(yīng)的頻率順序?yàn)樨?fù)頻率居砖、0虹脯、正頻率)
- 如果n是偶數(shù),那么復(fù)數(shù)數(shù)組對(duì)應(yīng)的頻率為:(dt為原數(shù)組的采樣時(shí)間間隔)
- 如果n是奇數(shù)奏候,那么復(fù)數(shù)數(shù)組對(duì)應(yīng)的頻率為:
n越小,那么傅里葉變換之后的用來(lái)疊加的離散三角函數(shù)個(gè)數(shù)(頻率個(gè)數(shù))越少蔗草,離散三角函數(shù)對(duì)應(yīng)頻率的間隔越大咒彤。
- 如果n是偶數(shù),那么復(fù)數(shù)數(shù)組對(duì)應(yīng)的頻率為:(dt為原數(shù)組的采樣時(shí)間間隔)
-
舉例如下:
import numpy as np fft=np.fft.fft(arrayTemp,512) fftshift=np.fft.fftshift(fft) amp=abs(fftshift)/len(fft) pha=np.angle(fftshift) fre=np.fft.fftshift(np.fft.fftfreq(d=1,n=512))
輸入數(shù)組為arrayTemp,np.fft.fft計(jì)算了該輸入數(shù)組的DFT镶柱,輸出的復(fù)數(shù)數(shù)組長(zhǎng)度為512個(gè)點(diǎn);np.fft.fftshift調(diào)整復(fù)數(shù)數(shù)組順序模叙。那么歇拆,
- 幅度amp范咨。
- 相位pha故觅。np.angle(復(fù)數(shù))計(jì)算復(fù)數(shù)的輔角主值。
- 離散復(fù)數(shù)數(shù)組對(duì)應(yīng)的頻率值為從-1/2至1/2的512個(gè)值湖蜕。d=dt,為原數(shù)組的采樣時(shí)間間隔昭抒,這里設(shè)為1。np.fft.fftfreq返回離散傅里葉變換的采樣頻率值,np.fft.fftshift對(duì)應(yīng)于復(fù)數(shù)數(shù)組調(diào)整頻率數(shù)組順序灭返。注意如果將n設(shè)為1024,DFT之后對(duì)應(yīng)的離散信號(hào)的頻率間距會(huì)更小熙含。
-
幅度譜和相位譜
頻率為橫軸罚缕,幅度為縱軸的圖即為幅度譜;頻率為橫軸怎静,相位為縱軸的圖為相位譜。import matplotlib.pyplot as plt plt.figure() plt.plot(fre,amp) plt.xlabel('Frequency');plt.ylabel('Amplitude') plt.figure() plt.plot(fre,pha) plt.xlabel('Frequency');plt.ylabel('Phase')
參考:
https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.fft.html#module-numpy.fft
https://zhuanlan.zhihu.com/p/90102365