欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年02月26日 10:13:21   作者:moge19  
今天小編就為大家分享一篇Python利用FFT進(jìn)行簡(jiǎn)單濾波的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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和600
y=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') #注意這里的顏色可以查詢顏色代碼表

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

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

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

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

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

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

yy=fft(y)           #快速傅里葉變換
yreal = yy.real        # 獲取實(shí)數(shù)部分
yimag = yy.imag        # 獲取虛數(shù)部分
test_y =yy
for 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é)果:

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

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

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

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

源碼:

noise_size = 1400
noise_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_array

yy=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 =yy
for i in range(len(yy)):
  if i <=1200 and i>=200:
    test_y[i]=0
test = np.fft.ifft(test_y) #對(duì)變換后的結(jié)果應(yīng)用ifft函數(shù),應(yīng)該可以近似地還原初始信號(hào)。
y=test
yy=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ù)頻譜圖:

濾波后的頻譜圖:

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

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

相關(guān)文章

  • python基礎(chǔ)學(xué)習(xí)之如何對(duì)元組各個(gè)元素進(jìn)行命名詳解

    python基礎(chǔ)學(xué)習(xí)之如何對(duì)元組各個(gè)元素進(jìn)行命名詳解

    python的元祖和列表類似,不同之處在于元祖的元素不能修改,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)學(xué)習(xí)之如何對(duì)元組各個(gè)元素進(jìn)行命名的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • 200個(gè)Python?標(biāo)準(zhǔn)庫(kù)總結(jié)

    200個(gè)Python?標(biāo)準(zhǔn)庫(kù)總結(jié)

    這篇文章主要給大家分享了200個(gè)Python?標(biāo)準(zhǔn)庫(kù)總結(jié),主要對(duì)文本、數(shù)據(jù)類型、數(shù)學(xué)等多個(gè)類型總結(jié),既有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • 關(guān)于Python使用turtle庫(kù)畫任意圖的問(wèn)題

    關(guān)于Python使用turtle庫(kù)畫任意圖的問(wèn)題

    這篇文章主要介紹了Python turtle庫(kù)畫任意圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 使用TensorFlow實(shí)現(xiàn)二分類的方法示例

    使用TensorFlow實(shí)現(xiàn)二分類的方法示例

    這篇文章主要介紹了使用TensorFlow實(shí)現(xiàn)二分類的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 如何在Python中引用其他模塊

    如何在Python中引用其他模塊

    這篇文章主要介紹了如何在Python中引用其他模塊,在Python中,除了可以自定義模塊外,還可以引用其他模塊,主要包括使用標(biāo)準(zhǔn)庫(kù)和第三方模塊,下面文章分別詳細(xì)的介紹,需要的小伙伴可以參考一下
    2022-06-06
  • 人工智能—Python實(shí)現(xiàn)線性回歸

    人工智能—Python實(shí)現(xiàn)線性回歸

    這篇文章主要介紹了人工智能—Python實(shí)現(xiàn)線性回歸,人工智能分為類型、數(shù)據(jù)集、效果評(píng)估、等,線性回歸根據(jù)隨機(jī)初始化的?w?x?b?和?y?來(lái)計(jì)算?loss等步驟實(shí)現(xiàn),下面來(lái)看看文章的具體實(shí)現(xiàn)吧
    2022-01-01
  • 用python處理圖片實(shí)現(xiàn)圖像中的像素訪問(wèn)

    用python處理圖片實(shí)現(xiàn)圖像中的像素訪問(wèn)

    本篇文章主要介紹了用python處理圖片實(shí)現(xiàn)圖像中的像素訪問(wèn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • django 獲取字段最大值,最新的記錄操作

    django 獲取字段最大值,最新的記錄操作

    這篇文章主要介紹了django 獲取字段最大值,最新的記錄操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Python ljust rjust center輸出

    Python ljust rjust center輸出

    Python中打印字符串時(shí)可以調(diào)用ljust(左對(duì)齊),rjust(右對(duì)齊),center(中間對(duì)齊)來(lái)輸出整齊美觀的字符串,使用起來(lái)非常簡(jiǎn)單,包括使用第二個(gè)參數(shù)填充(默認(rèn)為空格)。
    2008-09-09
  • python對(duì)html代碼進(jìn)行escape編碼的方法

    python對(duì)html代碼進(jìn)行escape編碼的方法

    這篇文章主要介紹了python對(duì)html代碼進(jìn)行escape編碼的方法,涉及Python中escape方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05

最新評(píng)論