關於C語言2D_FFT.... |
尚未結案
|
emil5201314_61135
一般會員 發表:4 回覆:3 積分:1 註冊:2006-08-19 發送簡訊給我 |
小弟利用了版上的大大程式碼,修改成C語言的FFT。可是出來的結果好像跟MATLAB差很多,請問各位大大我哪裡有寫錯??請大大幫忙小弟,十分感謝大大!!
#include <math.h><br />#include #include struct COMPLEX { float r, i; }; void _1Dfft( COMPLEX F[ 64 ], int log2n, int n, int ntype ) { int n2, i, j, k, m, stepN, stepN2, sign, ip; double ur, ui, wr, wi, tr, ti, pi = 4. * atan( 1. ), in; sign = -1; if ( ntype != 0 ) sign = 1; n2 = n / 2; j = 1; for ( i = 1; i < n; i ) { if ( i < j ) { tr = F[ i - 1 ].r; ti = F[ i - 1 ].i; F[ i - 1 ].r = F[ j - 1 ].r; F[ i - 1 ].i = F[ j - 1 ].i; F[ j - 1 ].r = tr; F[ j - 1 ].i = ti; } k = n2; while ( k < j ) { j = j - k; k = k / 2; } j = j k; } stepN = 1; for ( k = 1; k <= log2n; k ) { stepN *= 2; stepN2 = stepN / 2; wr = cos( pi / ( double ) stepN2 ); wi = sign * sin( pi / ( double ) stepN2 ); ur = 1.0; ui = 0.0; for ( m = 1; m <= stepN2; m ) { for ( i = m; i <= n;i = stepN ) { ip = i stepN2; tr = F[ ip - 1 ].r * ur - F[ ip - 1 ].i * ui; ti = F[ ip - 1 ].r * ui F[ ip - 1 ].i * ur; F[ ip - 1 ].r = F[ i - 1 ].r - tr; F[ ip - 1 ].i = F[ i - 1 ].i - ti; F[ i - 1 ].r = F[ i - 1 ].r tr; F[ i - 1 ].i = F[ i - 1 ].i ti; } tr = ur * wr - ui * wi; ti = ur * wi ui * wr; ur = tr; } } if ( ntype != 0 ) { in = 1. / n; for ( i = 0; i < n; i ) { F[ i ].r = F[ i ].r * in; F[ i ].i = F[ i ].i * in; } } return ; } void _2Dfft( COMPLEX F[ 64 ][ 64 ], int n, int log2n, int ntype ) { int i, j; struct COMPLEX temp[ 64 ]; for ( i = 0; i < n; i ) { for ( j = 0;j < n;j ) { temp[ j ].r = F[ i ][ j ].r; temp[ j ].i = F[ i ][ j ].i; } _1Dfft( temp, log2n, n, ntype ); for ( j = 0;j < n;j ) { F[ i ][ j ].r = temp[ j ].r; F[ i ][ j ].i = temp[ j ].i; } } for ( j = 0; j < n; j ) { for ( i = 0;i < n;i ) { temp[ i ].r = F[ i ][ j ].r; temp[ i ].i = F[ i ][ j ].i; } _1Dfft( temp, log2n, n, ntype ); for ( i = 0;i < n;i ) { F[ i ][ j ].r = temp[ i ].r; F[ i ][ j ].i = temp[ i ].i; } } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |