天天看點

python np fft_信号處理之倒頻譜原理與python實作

歡迎關注我們,選擇加"星标"或“置頂”

更多技術,第一時間送達

倒頻譜定義 

倒頻譜可以分析複雜頻譜圖上的周期結構,分離和提取在密集調頻信号中的周期成分,對于具有同族諧頻、異族諧頻和多成分邊頻等複雜信号的分析非常有效。倒頻譜變換是頻域信号的傅立葉積分變換的再變換。時域信号經過傅立葉積分變換可轉換為頻率函數或功率譜密度函數,如果頻譜圖上呈現出複雜的周期結構而難以分辨時,對功率譜密度取對數再進行一次傅立葉積分變換,可以使周期結構呈便于識别的譜線形式。第二次傅立葉變換的平方就是倒功率譜,即“對數功率譜的功率譜”。倒功率譜的開方即稱幅值倒頻譜,簡稱倒頻譜。

簡言之,倒頻譜分析技術是将時域振動信号的功率譜對數化,然後進行逆傅裡葉變化後得到的。倒頻譜的水準軸為“倒頻率”的僞時間,垂直軸為對應倒頻率的幅值,其計算公式為:

python np fft_信号處理之倒頻譜原理與python實作

其中,是時域振動信号,是時域振動信号的功率譜,為時域振動信号的倒頻譜。

倒頻譜python案例

實作如下:

from scipy.fftpack import fft, fftshift, ifftfrom scipy.fftpack import fftfreqimport numpy as npimport matplotlib.pyplot as pltimport warningswarnings.filterwarnings("ignore")fs = 1000#采樣點數num_fft = 1024"""生成原始信号序列在原始信号中加上噪聲np.random.randn(t.size)其中y1是主頻為5/10/20Hz的低頻信号+噪聲信号;y2是主頻為50、100/200Hz的高頻信号+噪聲信号;y是y1和y2的調制結果"""t = np.arange(0, 5, 1/fs)y1 = 10*np.cos(2*np.pi*5*t) + 7*np.cos(2*np.pi*10*t) + 5*np.cos(2*np.pi*20*t) + np.random.randn(t.size)y2 = 20*np.cos(2*np.pi*50*t) + 15*np.cos(2*np.pi*100*t) + 25*np.cos(2*np.pi*200*t) + np.random.randn(t.size)y = y1*y2plt.figure(figsize=(20, 12))ax=plt.subplot(331)ax.set_title('y1')plt.plot(y1)ax=plt.subplot(332)ax.set_title('y2')plt.plot(y2)ax=plt.subplot(333)ax.set_title('y=y1*y2')plt.plot(y)"""對低頻信号y1進行 FFT(Fast Fourier Transformation)快速傅裡葉變換"""Y1 = fft(y1, num_fft)Y1 = np.abs(Y1)ax=plt.subplot(334)ax.set_title('y1 fft')plt.plot(Y1[:num_fft//2])"""對高頻信号y2進行 FFT"""Y2 = fft(y2, num_fft)Y2 = np.abs(Y2)ax=plt.subplot(335)ax.set_title('y2 fft')plt.plot(Y2[:num_fft//2])"""對信号y進行 FFT"""Y = fft(y, num_fft)Y = np.abs(Y)ax=plt.subplot(336)ax.set_title('y fft')plt.plot(Y[:num_fft//2])plt.tight_layout()plt.show()
           
python np fft_信号處理之倒頻譜原理與python實作
"""倒頻譜的定義表述為:信号→功率譜→對數→傅裡葉逆變換"""spectrum = np.fft.fft(y, n=num_fft)ceps = np.fft.ifft(np.log(np.abs(spectrum))).realplt.figure(figsize=(10, 5))plt.plot(np.abs(ceps)[:num_fft//2])plt.title('y->spectrum->log->ifft')plt.ylim([0, 0.2])plt.show()
           
python np fft_信号處理之倒頻譜原理與python實作

代碼來源于網絡,本文對代碼進行注釋并整理

往期精彩

Python-EEG工具庫MNE-Python詳細安裝與使用

MNE中文教程(1)-MNE中資料結構Raw及其用法簡介

Python-EEG工具庫MNE中文教程(2)-MNE中資料結構Epoch及其建立方法

Python-EEG工具庫MNE中文教程(3)-MNE中資料結構Epoch及其用法簡介

Python-EEG工具庫MNE中文教程(4)-MNE中資料結構Evoked及其對象建立

Python-EEG工具庫MNE中文教程(5)-機器學習算法随機森林判斷睡眠類型

Python-EEG工具庫MNE中文教程(6)-讀取.set檔案和.locs檔案

穩态視覺誘發電位 SSVEP 簡介

Nilearn中的基本操作和檢視

腦電信号濾波-代碼實作

信号處理之功率譜原理與python實作

EMD算法原理與實作

腦機接口BCI學習交流群:QQ群:903290195

微信群請掃碼添加,Rose拉你進群

(請務必填寫備注,eg. 腦機接口或BCI)

python np fft_信号處理之倒頻譜原理與python實作

長按加群

python np fft_信号處理之倒頻譜原理與python實作

長按關注我們

繼續閱讀