快速傅利葉:
更加形象的理解傅利葉變換:
大概了解之後:
從傅利葉級數到傅利葉變換:
(**太大,只能裁剪為兩張)
刨根問底的同學:
雷德演算法:
輸出序列是按自然順序排列的,而輸入序列的順序則是「位元反轉」方式排列的。也就是說,將序號用二進位制表示,然後將二進位制數以相反方向排列,再以這個數作為序號。如011變成110,那麼第3個輸入值和第六個輸入值就要交換位置了。
詳見思路:
執行結果:#include #include #include #include #define pi 3.1415926 //定義圓周率值
#define n 16 //變換點數
using namespace std;
typedef struct compx
compx;
//複數乘法
compx multi(compx a, compx b)
//複數加法
compx add(compx a, compx b)
//複數減法
compx sub(compx a, compx b)
//快速傅利葉
void fft(compx data)
k = n/2;
//實現進製
while(k <= j) //左邊最高位為1
j += k;
}//計算蝶形級數m
int f = n, m;
for(m = 1; (f=f/2) != 1; m++);
//控制級數
for(int n = 1; n <= m; n++)
u = multi(u, w);}}
}int main()
fft(data);
for(int i = 0; i < n; i++)
printf("%lf \t%lf\n", data[i].real, data[i].img);
return 0;
}
matlab對比結果:
FFT快速傅利葉
description 給出兩個n位10進製整數x和y,你需要計算xy。input 第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整數y output 輸出一行,即xy的結果。資料範圍 n 60000 乙個整數x a nan 1.a 0x a na a 0 x an...
FFT 快速傅利葉演算法 for java
package com.test.test2 public class fft bitreverse i reve double theta,dt 2 3.14159265358979323846 fft n for i 0 i fft n 1 i 用於頻譜顯示的快速傅利葉變換 param real...
2179 FFT快速傅利葉
time limit 10 sec memory limit 259 mb submit 2803 solved 1431 submit status discuss 給出兩個n位10進製整數x和y,你需要計算x y。第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整...