用\(n\)點復序列快速傅利葉變換來計算\(2n\)點實序列的離散傅利葉變換。
假設\(x(n)\)是長度為\(2n\)的實序列,其離散傅利葉變換為
\[x(k)=\sum_^x(n)w_^ \ , \ k=0,1,...,2n-1
\]為有效地計算傅利葉變換\(x(k)\), 我們將\(x(n)\)分為偶數組和奇陣列,形成兩個新序列\(x(n)\)和\(g(n)\),即
\[\left\\beginf(n)&=x(2n)\\ g(n)&=x(2n+1)\end\end\right. , n=0,1,...,n-1
\]然後將\(f(n)\)和\(g(n)\)組成乙個復序列\(h(n)\)
\[h(n)=f(n)+jg(n), \ n = 0,1,...,n-1
\]用fft計算\(h(n)\)的\(n\)點傅利葉變換\(h(k)\), 並且\(h(k)\)可表示為
\[h(k)=f(k)+jg(k), \ n = 0,1,...,n-1
\]由上容易推出
\[\left\\beginf(k)&=\frac[h(k)+h^(n-k)]\\ g(k)&=-\frac[h(k)-h^(n-k)]\end\end\right. , n=0,1,...,n-1
\]求得\(f(k)\)和\(g(k)\)後,利用下面的蝶形運算計算\(x(n)\)的離散傅利葉變換\(x(k)\)
\[\left\\beginx(k)&=f(k)+g(k)w_^\\ x(k+n)&=f(k)-g(k)w_^\end\end\right. , n=0,1,...,n-1
\]這種實序列fft演算法比相同長度的復序列fft演算法大約可減少一半的運算量。
是用c語言實現實序列快速傅利葉變換的方法如下:
/************************************
x ----長度為n。開始時存放要變換的實資料,最後存放變換結果的前n/2+1個值,
其儲存順序為[re(0),re(1),...,re(n/2),im(n/2-1),...,im(1)]。
其中re(0)=x(0),re(n/2)=x(n/2)。根據x(k)的共軛對稱性,很容易寫
出後半部分的值。
n ----資料長度,必須是2的整數次冪,即n=2^m。
************************************/
#include "math.h"
#include "stdlib.h"
#include "fft.c"
void rlfft(double *x, int n)
fft(f, g, n1, 1);
x[0] = f[0] + g[0];
x[n1] = f[0] - g[0];
for(i = 1; i < n1; i++)
free(f);
free(g);
}
fft.c檔案參見快速傅利葉變換 傅利葉變換與快速傅利葉變換
作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...
快速傅利葉變換
學習快速傅利葉變化是量子計算中的基礎,查了很多資料,以下鏈結可以作為參考 本部落格部分知識學習於 最後這個裡面有解釋蝴蝶效應是怎麼來的!實用數字訊號處理 dft 離散傅利葉變換 o n2 計算多項式乘法 fft 快速傅利葉變換 o n log n 計算多項式乘法 fntt ntt 快速傅利葉變換的優...
快速傅利葉變換
傅利葉變換 fft fast fourier transformation 是離散傅氏變換 dft 的快速演算法。即為快速傅氏變換。它是根據離散傅氏變換的奇 偶 虛 實等特性,對離散傅利葉變換的演算法進行改進獲得的。採用這種演算法能使計算機計算離散傅利葉變換所需要的乘法次數大為減少,特別是被變換的抽...