快速傅利葉變換c++遞迴演算法實現
網上有些演算法資料經測試執行結果是錯誤的,雖然**的使用的是非遞迴形式。為了方便驗證快速傅利葉變換的準確性,我提供了自己設計的遞迴演算法。
基於時域抽取的「基
2」快速傅利葉變換演算法**:
fouier.h
檔案:
#pragma once
#include
"complex.h
"class fouier
;
fouier.c
檔案:
#include
"fouier.h
"#include
using
namespace std;
#include
#include
#define datalen 32
#define keyvalue 10000
//生成隨機浮點數的值,保證分子和分母在這個值之內
#define pi 3.14159265358979323846
fouier::fouier(
void)
coutcomplex fouier:: w(
int k,
int n)
//尤拉公式
void fouier::fft(
int start,
int step,
int len)
fft(start,step*
2,len/
2);//
x1(k)
fft(start+step,step*
2,len/
2);//
x2(k)
complex x1,x2;
for(
int i=
0;i2;i++)
}
void fouier::fft()
} complex.h
檔案:
#pragma once
#include
using
namespace std;
class complex
//a+b*i;
complex.c
檔案:
#include
"complex.h
"complex::complex(
double a,
double b)
//虛部預設是0
complex::~complex(
void)
complex
operator +(complex &x,complex &y)
complex
operator +(
double x,complex &y)
complex
operator +(complex &x,
double y)
complex
operator -(complex &x,complex &y)
complex
operator -(
double x,complex &y)
complex
operator -(complex &x,
double y)
complex
operator *(complex &x,complex &y)
complex
operator *(
double x,complex &y)
complex
operator *(complex &x,
double y)
complex complex::
operator =(complex &x)
complex complex::
operator =(
double x)
ostream &
operator
<<(ostream&
out,complex&c)
return
out;
}
main.c
檔案:
#include
using
namespace std;
#include
"fouier.h
"int main()
如有錯誤,歡迎批評指正!
快速傅利葉變換C 遞迴演算法實現
快速傅利葉變換c 遞迴演算法實現 網上有些演算法資料經測試執行結果是錯誤的,雖然 的使用的是非遞迴形式。為了方便驗證快速傅利葉變換的準確性,我提供了自己設計的遞迴演算法。基於時域抽取的 基 2 快速傅利葉變換演算法 fouier.h 檔案 pragma once include complex.h ...
離散傅利葉變換 快速傅利葉變換C 實現
傅利葉變換是將時域訊號變換為頻域訊號的一種方式,我主要用它來做兩件事情 1 求一段資料的週期性。2 通過傅利葉變換及其逆變換,進行低通濾波 去躁 首先需要做幾點說明 1.快速傅利葉變換是離散傅利葉變換的快速演算法,當資料來源較大時 大於1000 快速傅利葉變換有明顯優勢。2.快速傅利葉變換的訊號源長...
傅利葉變換與快速傅利葉變換
作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...