久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

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

1、流程

大體流程如下,無(wú)論圖像、聲音、ADC數(shù)據(jù)都是如下流程:

(1)將原信號(hào)進(jìn)行FFT;

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

(3)進(jìn)行FFT逆變換得到信號(hào)數(shù)據(jù);

2、算法仿真

2.1 生成數(shù)據(jù):

#采樣點(diǎn)選擇1400個(gè),因?yàn)樵O(shè)置的信號(hào)頻率分量最高為600Hz,根據(jù)采樣定理知采樣頻率要大于信號(hào)頻率2倍,所以這里設(shè)置采樣頻率為1400Hz(即一秒內(nèi)有1400個(gè)采樣點(diǎn))x=np.linspace(0,1,1400)#設(shè)置需要采樣的信號(hào),頻率分量有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 對(duì)生成的數(shù)據(jù)進(jìn)行FFT變換

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

2.3顯示轉(zhuǎn)換結(jié)果:

顯示原始FFT模值:

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

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

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

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

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

由于對(duì)稱,只取一半?yún)^(qū)間進(jìn)行顯示

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

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

3、利用FFT進(jìn)行濾波

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

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

對(duì)置零后的數(shù)據(jù)進(jìn)行逆變換:

test = np.fft.ifft(test_y) #對(duì)變換后的結(jié)果應(yīng)用ifft函數(shù),應(yīng)該可以近似地還原初始信號(hào)。

對(duì)還原的數(shù)據(jù)進(jìn)行FFT變換的結(jié)果:

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

濾波后的數(shù)據(jù)和原數(shù)據(jù)相對(duì)比:

藍(lán)色的為原數(shù)據(jù),橙色的為濾波后的數(shù)據(jù)

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

假設(shè)將400Hz和600Hz的信號(hào)都濾掉得到的信號(hào)圖像如下:

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

4、對(duì)隨機(jī)噪聲進(jìn)行濾波

源碼:

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))] #由于對(duì)稱性,只取一半?yún)^(qū)間#混合波的FFT(雙邊頻率范圍)xf = np.arange(len(y)) plt.figure(1)plt.plot(xf,yf,’r’) #顯示原始信號(hào)的FFT模值plt.title(’FFT of Mixed wave(two sides frequency range)’,fontsize=7,color=’#7A378B’) #注意這里的顏色可以查詢顏色代碼表yy=fft(y) #快速傅里葉變換yreal = yy.real# 獲取實(shí)數(shù)部分yimag = yy.imag# 獲取虛數(shù)部分test_y =yyfor i in range(len(yy)): if i <=1200 and i>=200: test_y[i]=0test = np.fft.ifft(test_y) #對(duì)變換后的結(jié)果應(yīng)用ifft函數(shù),應(yīng)該可以近似地還原初始信號(hào)。y=testyy=fft(y) #快速傅里葉變換yf=abs(fft(y))# 取模yf1=abs(fft(y))/((len(y)/2)) #歸一化處理yf2 = yf1[range(int(len(y)/2))] #由于對(duì)稱性,只取一半?yún)^(qū)間#混合波的FFT(雙邊頻率范圍)xf = np.arange(len(y)) plt.figure(2)plt.plot(xf,yf,’r’) #顯示原始信號(hào)的FFT模值plt.title(’FFT of Mixed wave(two sides frequency range)’,fontsize=7,color=’#7A378B’) #注意這里的顏色可以查詢顏色代碼表

運(yùn)行結(jié)果:

原數(shù)據(jù)頻譜圖:

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

濾波后的頻譜圖:

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

濾波后(藍(lán)色線)與原數(shù)據(jù)(紅色線)對(duì)比:

Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)

以上這篇Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 中文字幕日韩一区二区 | 国产精品女教师av久久 | 欧美一区二区三区免费视频 | 欧洲av在线 | 免费在线成人 | 国产目拍亚洲精品99久久精品 | 日韩资源在线 | 午夜小视频免费 | 午夜网址 | 自拍偷拍亚洲视频 | 国产精品对白一区二区三区 | 免费国产一区二区 | 国产成人免费在线 | 高清在线一区二区 | 国内精品久久久久国产 | 国产一区二区影院 | 午夜久久久 | 免费看一区二区三区 | 日精品 | av黄在线观看 | 国产毛片精品 | 国产伊人99| 日韩欧美一区二区在线观看 | 日韩精品一区二区在线观看 | 亚洲欧洲av在线 | 欧美日韩电影一区二区三区 | 亚洲免费视频观看 | 欧美久久久久久久久久久久久久 | 久久久久久久久久影院 | 欧美一级在线 | 日本中文字幕在线播放 | 综合精品久久久 | 欧美成年黄网站色视频 | 羞羞视频免费观看 | 毛片网站在线观看 | 99精品欧美一区二区三区 | 亚洲高清在线观看 | 日韩在线免费 | 成人免费在线视频 | 国产成人精| 欧美国产91|