numpy的快速傅里叶变换
生活随笔
收集整理的這篇文章主要介紹了
numpy的快速傅里叶变换
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
快速傅里葉變換(fft)
什么是傅里葉變換?
傅里葉定理: 任何一條周期曲線, 無論多么跳躍或不規(guī)則, 都能表示成一組光滑正弦曲線疊加之和. 傅里葉變換即是把這條周期曲線拆解成一組光滑正弦曲線的過程.
傅里葉變換的目的是將時域(時間域)上的信號轉(zhuǎn)變?yōu)轭l域(頻率域)上的信號, 隨著域的不同,對同一個事物的了解角度也隨之改變. 因此在時域中某些不好處理的地方, 放在頻域中就可以較為簡單的處理. 這樣可以大量減少處理的數(shù)據(jù)量.
傅里葉定理:
y=A1sin(ω1x+?1)+A2sin(ω2x+?2)+..+Cy = A_1sin(\omega_1x+\phi_1) + A_2sin(\omega_2x+\phi_2) + .. +C y=A1?sin(ω1?x+?1?)+A2?sin(ω2?x+?2?)+..+C
快速傅里葉變換相關(guān)API:
案例: 基于傅里葉變換, 拆解方波.
""" demo04_fft.py 傅里葉變換 """ import numpy as np import matplotlib.pyplot as mp import numpy.fft as nfx = np.linspace(-2*np.pi, 2*np.pi, 1000)# 疊加1000條曲線 y = np.zeros(x.size) for i in range(1, 1000):y += 4/(2*i-1)*np.pi * np.sin((2*i-1)*x)# 對y做傅里葉變換, 繪制頻域圖像 ffts = nf.fft(y) # 獲取傅里葉變換的頻率序列 freqs = nf.fftfreq(x.size, x[1]-x[0]) pows = np.abs(ffts)mp.figure('FFT', facecolor='lightgray') mp.subplot(121) mp.grid(linestyle=':') mp.plot(x, y,linewidth=2) mp.subplot(122) mp.grid(linestyle=':') mp.plot(freqs[freqs>0], pows[freqs>0], c='orangered') # 通過復(fù)數(shù)數(shù)組,經(jīng)過ifft操作, 得到原函數(shù) y2 = nf.ifft(ffts) mp.subplot(121) mp.plot(x, y2, linewidth=7, alpha=0.5)mp.show()基于傅里葉變換的頻域濾波
含噪信號是高能信號與低能噪聲疊加的信號, 可以通過傅里葉變換的頻域濾波實現(xiàn)簡單降噪.
通過FFT使含噪信號轉(zhuǎn)換為含噪頻譜, 手動取出低能噪聲, 留下高能頻譜后,再通過IFFT生成高能信號.
總結(jié)
以上是生活随笔為你收集整理的numpy的快速傅里叶变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Virtual Table — RTTI
- 下一篇: 工作、求职需要记住的英文缩写,offer