#include#include
#include
#define pi 3.141592653589793238462643383279 //
這三十位的pi我小學就會背了
void fft_rec(int n,int offset,int delta,double (*x)[2],double (*x)[2],double (*xx)[2])
}else
}void fft(int n,double (*x)[2],double (*x)[2])
void ifft(int n, double (*x)[2], double (*x)[2])
}int main()
while (fscanf(fp, "
%lg%lg
",&dummy,&dummy)==2)
n++;
printf("
n=%d
",n);
if (n>=2)
if (n<2 || i!=1)
x=malloc(2*n*sizeof(double));
x=malloc(2*n*sizeof(double));
rewind(fp); //
重置檔案指標
for (i=0;i"
%lg%lg
",&x[i][0],&x[i][1]); //
讀取檔案資料,賦為時域取樣值
fclose(fp); //
關閉檔案
printf("
\n時域取樣資料x(n):\n
"); //
顯示原始資料
for (i=0;i"
%12f %12f\n
",x[i][0],x[i][1]);
}fft(n,x,x); //
正變換函式
printf("
\n頻域變換資料x(k):\n
"); //
顯示正變換後的資料
for (i=0;i"
%12f %12f\n
",x[i][0],x[i][1]);
x[i][0]=0;
x[i][1]=0;
}ifft(n,x,x); //
反變換函式
printf("
\n再反變換後時域資料x(n):\n
"); //
顯示反變換後的資料,理論上和原資料一致
for (i=0;i"
%12f %12f\n
",x[i][0],x[i][1]);
}free(x);
free(x);
system("
pause
");return
0;}
data.txt:
3.6 2.6
2.9 6.3
5.6 4.0
4.8 9.1
3.3 0.4
5.9 4.8
5.0 2.6
4.3 4.1
受朋友所託,寫了這樣的乙個程式,參考了加州理工乙個老外的程式。
傅利葉變換與快速傅利葉變換
作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...
快速傅利葉變換
學習快速傅利葉變化是量子計算中的基礎,查了很多資料,以下鏈結可以作為參考 本部落格部分知識學習於 最後這個裡面有解釋蝴蝶效應是怎麼來的!實用數字訊號處理 dft 離散傅利葉變換 o n2 計算多項式乘法 fft 快速傅利葉變換 o n log n 計算多項式乘法 fntt ntt 快速傅利葉變換的優...
快速傅利葉變換
傅利葉變換 fft fast fourier transformation 是離散傅氏變換 dft 的快速演算法。即為快速傅氏變換。它是根據離散傅氏變換的奇 偶 虛 實等特性,對離散傅利葉變換的演算法進行改進獲得的。採用這種演算法能使計算機計算離散傅利葉變換所需要的乘法次數大為減少,特別是被變換的抽...