我看了說明文件, 有些地方不太懂,
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)