亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Python利用FFT進行簡單濾波的實現

瀏覽:90日期:2022-08-06 11:15:38

1、流程

大體流程如下,無論圖像、聲音、ADC數據都是如下流程:

(1)將原信號進行FFT;

(2)將進行FFT得到的數據去掉需要濾波的頻率;

(3)進行FFT逆變換得到信號數據;

2、算法仿真

2.1 生成數據:

#采樣點選擇1400個,因為設置的信號頻率分量最高為600Hz,根據采樣定理知采樣頻率要大于信號頻率2倍,所以這里設置采樣頻率為1400Hz(即一秒內有1400個采樣點)x=np.linspace(0,1,1400)#設置需要采樣的信號,頻率分量有180,390和600y=2*np.sin(2*np.pi*180*x) + 3*np.sin(2*np.pi*390*x)+4*np.sin(2*np.pi*600*x)

2.2 對生成的數據進行FFT變換

yy=fft(y) #快速傅里葉變換yf=abs(fft(y))# 取模yf1=abs(fft(y))/((len(x)/2)) #歸一化處理yf2 = yf1[range(int(len(x)/2))] #由于對稱性,只取一半區間

2.3顯示轉換結果:

顯示原始FFT模值:

#混合波的FFT(雙邊頻率范圍)plt.figure(2)plt.plot(xf,yf,’r’) #顯示原始信號的FFT模值plt.title(’FFT of Mixed wave(two sides frequency range)’,fontsize=7,color=’#7A378B’) #注意這里的顏色可以查詢顏色代碼表

Python利用FFT進行簡單濾波的實現

顯示原始FFT歸一化后的模值:

#混合波的FFT(歸一化)plt.figure(3)plt.plot(xf1,yf1,’g’)plt.title(’FFT of Mixed wave(normalization)’,fontsize=9,color=’r’)

Python利用FFT進行簡單濾波的實現

由于對稱,只取一半區間進行顯示

plt.figure(4)plt.plot(xf2,yf2,’b’)plt.title(’FFT of Mixed wave)’,fontsize=10,color=’#F08080’)

Python利用FFT進行簡單濾波的實現

3、利用FFT進行濾波

例如將頻率為600HZ的噪聲濾掉,這里直接將該頻段的數據置零:

yy=fft(y) #快速傅里葉變換yreal = yy.real# 獲取實數部分yimag = yy.imag# 獲取虛數部分test_y =yyfor i in range(len(yy)): if i <=900 and i>=500: test_y[i]=0

對置零后的數據進行逆變換:

test = np.fft.ifft(test_y) #對變換后的結果應用ifft函數,應該可以近似地還原初始信號。

對還原的數據進行FFT變換的結果:

Python利用FFT進行簡單濾波的實現

濾波后的數據和原數據相對比:

藍色的為原數據,橙色的為濾波后的數據

Python利用FFT進行簡單濾波的實現

假設將400Hz和600Hz的信號都濾掉得到的信號圖像如下:

Python利用FFT進行簡單濾波的實現

4、對隨機噪聲進行濾波

源碼:

noise_size = 1400noise_array = np.random.normal(0, 2, noise_size) adc_value=[] for i in range(noise_size): adc_value.append(0) y= np.array(adc_value) + noise_arrayyy=fft(y) #快速傅里葉變換yf=abs(fft(y))# 取模yf1=abs(fft(y))/((len(y)/2)) #歸一化處理yf2 = yf1[range(int(len(y)/2))] #由于對稱性,只取一半區間#混合波的FFT(雙邊頻率范圍)xf = np.arange(len(y)) plt.figure(1)plt.plot(xf,yf,’r’) #顯示原始信號的FFT模值plt.title(’FFT of Mixed wave(two sides frequency range)’,fontsize=7,color=’#7A378B’) #注意這里的顏色可以查詢顏色代碼表yy=fft(y) #快速傅里葉變換yreal = yy.real# 獲取實數部分yimag = yy.imag# 獲取虛數部分test_y =yyfor i in range(len(yy)): if i <=1200 and i>=200: test_y[i]=0test = np.fft.ifft(test_y) #對變換后的結果應用ifft函數,應該可以近似地還原初始信號。y=testyy=fft(y) #快速傅里葉變換yf=abs(fft(y))# 取模yf1=abs(fft(y))/((len(y)/2)) #歸一化處理yf2 = yf1[range(int(len(y)/2))] #由于對稱性,只取一半區間#混合波的FFT(雙邊頻率范圍)xf = np.arange(len(y)) plt.figure(2)plt.plot(xf,yf,’r’) #顯示原始信號的FFT模值plt.title(’FFT of Mixed wave(two sides frequency range)’,fontsize=7,color=’#7A378B’) #注意這里的顏色可以查詢顏色代碼表

運行結果:

原數據頻譜圖:

Python利用FFT進行簡單濾波的實現

濾波后的頻譜圖:

Python利用FFT進行簡單濾波的實現

濾波后(藍色線)與原數據(紅色線)對比:

Python利用FFT進行簡單濾波的實現

以上這篇Python利用FFT進行簡單濾波的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产香蕉成人综合精品视频 | 久色视频在线观看 | 中文字幕视频网 | 在线观看欧洲成人免费视频 | 一区二区三区 日韩 | 在线国产欧美 | 欧美一区二区在线 | 九九精品99久久久香蕉 | 好吊妞国产欧美日韩视频 | 午夜欧美精品久久久久久久久 | 国产久草在线 | 亚洲欧美网 | 国内精品久久久久久久星辰影视 | 国产精品免费一区二区三区四区 | 成人a在线观看 | 亚洲第一看片 | 三级黄色免费网站 | 狠狠色综合久久丁香婷婷 | 亚洲一区二区三区免费 | 久久精品国内一区二区三区 | 国产亚洲精品线观看77 | 亚洲欧美日本韩国综合在线观看 | 亚洲国产激情在线一区 | 国产欧美日韩一区二区三区在线 | a国产精品| 色噜噜狠狠大色综合 | 色偷偷女男人的天堂亚洲网 | 日本乱理伦中文三区 | 亚洲美色综合天天久久综合精品 | 一级毛片美国aaj毛片 | 模特三级在线观看 | 日韩欧美一区二区三区在线 | 69久成人做爰视频 | 欧美成人黄色网 | 日本一级特黄aa毛片免费观看 | caoporen在线视频入口 | aaa级大片 | 天堂影院jav成人天堂免费观看 | 欧美日一级 | 欧美一级毛片免费观看视频 | 亚洲精品一区二区三区国产 |