Python?numpy下幾種fft函數(shù)的使用方式
numpy下fft模塊提供了豐富的fft函數(shù),幾種常用的在這里記錄一下使用方式
fft
輸入實(shí)數(shù)samples,如果輸入的sample是帶虛數(shù)部分的話,虛數(shù)部分會(huì)被默認(rèn)刪除。
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print(s)
運(yùn)行結(jié)果截圖如下

從圖中可以看到,
- [0]是一個(gè)實(shí)數(shù),實(shí)數(shù)部分是所有input中各個(gè)元素之和。
- [i]與[N-i]共軛;輸入的N如果是偶數(shù),那么[N/2]沒有共軛的元素。 rfft
rfft
其實(shí)就是對(duì)fft的結(jié)果輸出做了省略。 針對(duì)剛剛提到的共軛特性,其實(shí)輸出結(jié)果是要保留(N+1)//2個(gè)結(jié)果就可以了。
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print("fft result:", s)
s = np.fft.rfft(b)
print("rfft result:", s)

fftfreq
返回fft的頻率節(jié)點(diǎn)
上面的fft和rfft將時(shí)域數(shù)據(jù)轉(zhuǎn)為頻域,得到的數(shù)據(jù)的bin是哪些范圍?
可以通過fftfreq來獲取
第一個(gè)參數(shù)n是時(shí)域數(shù)據(jù)的數(shù)據(jù)個(gè)數(shù),第二個(gè)參數(shù)d是表示每一個(gè)bin的尺度。一般是1/sample_rate
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print("fft result:", s)
s = np.fft.rfft(b)
print("rfft result:", s)
s= np.fft.fftfreq(12, d=1/8000)
print(s)
其結(jié)果為
[ 0. 666.66666667 1333.33333333 2000.
2666.66666667 3333.33333333 -4000. -3333.33333333
-2666.66666667 -2000. -1333.33333333 -666.66666667]
那么結(jié)合rfft的數(shù)據(jù)就有
| Bin | Range | Value |
|---|---|---|
| bin[1] | 1~667HZ | 0.46997981+0.41183211j |
| bin[2] | 667~1334HZ | -1.36179847-5.76500237j |
| bin[3] | 1334~2000HZ | 0.14669493-0.4965488j |
| bin[4] | 2000~2667HZ | 0.20513541-0.2233417j |
| bin[5] | 2667~3333HZ | 0.22157176-0.09538547j |
| bin[6] | 3333~4kHZ | 0.22563497+0.j |
ifft
ifft是逆向fft操作,代碼如下
import numpy as np
t=np.arange(12)
b=np.sin(t)
print(b)
s = np.fft.fft(b)
#print(s)
y = np.fft.ifft(s)
print("restore:", y)

它的結(jié)果雖然也是復(fù)數(shù),但是在實(shí)數(shù)部分,可以看到,就是結(jié)果;
所以也可以直接輸出實(shí)數(shù)部分np.fft.ifft(s).real
irfft
irfft是配合rfft使用的; 上面的例子可以看到,如果信號(hào)長度是n, 那么fft的輸出結(jié)果的長度也是n;
但是rfft的結(jié)果是n//2+1;
irfft匹配的是rfft,所以它的參數(shù)長度與ifft是不同的;兩者也不可混用。
import numpy as np
t=np.arange(12)
b=np.sin(t)
print(b)
s = np.fft.rfft(b)
#print(s)
y = np.fft.irfft(s)
print("restore:", y)

總結(jié)
到此這篇關(guān)于Python numpy下幾種fft函數(shù)使用的文章就介紹到這了,更多相關(guān)numpy fft函數(shù)的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)多并發(fā)訪問網(wǎng)站功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)多并發(fā)訪問網(wǎng)站功能,結(jié)合具體實(shí)例形式分析了Python線程結(jié)合URL模塊并發(fā)訪問網(wǎng)站的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Pytorch Tensor的統(tǒng)計(jì)屬性實(shí)例講解
今天小編就為大家分享一篇Pytorch Tensor的統(tǒng)計(jì)屬性實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python pandas模塊進(jìn)行數(shù)據(jù)分析
Python的Pandas模塊是一個(gè)強(qiáng)大的數(shù)據(jù)處理工具,可以用來讀取、處理和分析各種數(shù)據(jù),本文主要介紹了python pandas模塊進(jìn)行數(shù)據(jù)分析,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
解決python父線程關(guān)閉后子線程不關(guān)閉問題
這篇文章主要介紹了解決python父線程關(guān)閉后子線程不關(guān)閉問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python的setattr函數(shù)實(shí)例用法
在本篇文章里小編給大家整理了一篇關(guān)于python的setattr函數(shù)實(shí)例用法的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2020-12-12
python中__init__方法知識(shí)點(diǎn)詳解
Python中常會(huì)看到在很多類中都有一個(gè)__init__函數(shù),該函數(shù)有什么作用,又該如何使用呢,下面這篇文章主要給大家介紹了關(guān)于python中__init__知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下2023-04-04
Python使用 Beanstalkd 做異步任務(wù)處理的方法
這篇文章主要介紹了Python使用 Beanstalkd 做異步任務(wù)處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04

