首先理解下傅利葉變換
如果還看不懂傅利葉變換,請掐死我吧!
import numpy as np
from math import*x=
[1,2
,3,4
,5]'''傅利葉變換'''
deffft
(x):
x = np.asarray(x, dtype=
float
) n = x.shape[0]
n = np.arange(n)
k = n.reshape(
(n,1))
m = np.exp(-2j
* np.pi * k * n / n)
f = np.dot(m, x)
return f
##########c++裡沒有numpy包,需要迴圈遍歷####################
deffft1
(a):
n =len(a)
f =for k in
range
(n):
f =0for m in
range
(n):
f += a[m]
* e**(-
2j* pi *
(m*k)
/ n)
return f
############三角函式代替指數函式#################
deffft2
(data)
: length=
len(data)
fftdata =[0
+0j]*length
print
(fftdata)
for k in
range
(length)
:for i in
range
(length)
: fftdata[k]
+= data[i]
*(cos(-2
*pi*k*i/length)+1j
*sin(-2
*pi*k*i/length)
)return fftdata
'''傅利葉反變換'''
defifft1
(a):
n =len(a)
f =for k in
range
(n):
f =0for m in
range
(n):
f += a[m]
* e**(2j
* pi *
(m*k)
/ n)
/nreturn f
############三角函式代替指數函式#################
defifft2
(data)
: length=
len(data)
ifftdata =[0
+0j]*length
print
(ifftdata)
for k in
range
(length)
:for i in
range
(length)
: ifftdata[k]
+= data[i]
*(cos(
2*pi*k*i/length)+1j
*sin(
2*pi*k*i/length)
)/length
return ifftdata
快速傅利葉變換程式與反變換程式
快速傅利葉變換程式 include stdafx.h include define pi 3.14159265359 define m 8 取反函式 int rebit int num,int p return rb 1 2的次方函式 inline int pow2 int n for i 0 i ...
離散傅利葉變換 快速傅利葉變換C 實現
傅利葉變換是將時域訊號變換為頻域訊號的一種方式,我主要用它來做兩件事情 1 求一段資料的週期性。2 通過傅利葉變換及其逆變換,進行低通濾波 去躁 首先需要做幾點說明 1.快速傅利葉變換是離散傅利葉變換的快速演算法,當資料來源較大時 大於1000 快速傅利葉變換有明顯優勢。2.快速傅利葉變換的訊號源長...
傅利葉變換與反變換 李永樂老師筆記
一 傅利葉分解 任何乙個時域空間的週期性函式都可以分解成一組正 餘 弦波,圖一 二 傅利葉變換 時域函式 頻域函式 f t 經過f操作分解成一組正余弦波 f操作為傅利葉變換 圖二 怎麼在頻域空間描述這組正余弦波呢,直覺的答案是用不同頻率和相應的振幅來描述 比如3w頻率波的振幅大約是w頻率波振幅的一半...