看板 C_and_CPP 關於我們 聯絡資訊
我看了說明文件, 有些地方不太懂, 1.為什麼一樣是DCT, matlab的DCT結果卻和FFTW的不相同? 2.要如何對2為矩陣坐x或y軸執行FFT? 3.以及我正在測試DCT, 但是總是印出錯誤值, 不知道是哪裡錯了, 請大大幫我看一下 以下是我的程式嗎 #define NNx 3 #define NNy 3 #define pi 3.141592653589793 // ================= Main ================= // int main(int argc, char *argv[]) { int i; float *b2,*b3; fftw_plan p,q; b2 = (float*) malloc( sizeof(float)*NNx*NNy ); b3 = (float*) malloc( sizeof(float)*NNx*NNy ); p=fftw_plan_r2r_2d( NNx, NNy, b2, b3, FFTW_REDFT10, FFTW_REDFT10, FFTW_ESTIMATE ); q=fftw_plan_r2r_2d( NNx, NNy, b3, b2, FFTW_REDFT01, FFTW_REDFT01, FFTW_ESTIMATE ); printf("input\n"); for( i = 0; i < NNx*NNy; i++) { b2[i] = i; if(i % NNy == 0) printf("\n"); else printf(" "); printf("%8.5f", b2[i]); } printf("\n"); // ______________ DCT2 ______________ // fftw_execute( p ); printf("output\n"); for( i = 0; i < NNx*NNy; i++) { if(i % NNy == 0) printf("\n"); else printf(" "); printf("%8.5f", b3[i]); } printf("\n"); // ______________ IDCT2 ______________ // fftw_execute( q ); printf("output\n"); for( i = 0; i < NNx*NNy; i++) { if(i % NNy == 0) printf("\n"); else printf(" "); printf("%8.5f", b2[i]); } printf("\n"); system("PAUSE"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.192.147 ※ 編輯: aada 來自: 140.122.192.147 (03/08 03:43)