我正在使用離散餘弦變換來測試庫。對於dct使用fftw3庫
#include <fftw3.h>
void dump_vector(int n, double* vec) {
for(int i = 0; i < n; i++)
printf("%f ", vec[i]);
printf("\n");
}
int main()
{
double a[] = {0.5, 0.6, 0.7, 0.8};
double b[] = {0, 0, 0, 0};
printf("Original vector\n");
dump_vector(4, a);
fftw_plan plan = fftw_plan_r2r_1d(4, a, a, FFTW_REDFT10, FFTW_ESTIMATE);
fftw_execute(plan);
printf("DCT\n");
dump_vector(4, a);
fftw_plan plani = fftw_plan_r2r_1d(4, a, a, FFTW_REDFT10, FFTW_ESTIMATE);
fftw_execute(plani);
printf("IDCT\n");
dump_vector(4, a);
return 0;
}
我希望能獲得相同a
,也許近似,但我的輸出中如下:
Original vector
0.500000 0.600000 0.700000 0.800000
DCT
5.200000 -0.630864 0.000000 -0.044834
IDCT
9.048603 9.208347 8.182682 5.179908
它看起來像在這兩種情況下,你正在執行的正變換,不逆。如果我正確閱讀文檔,您需要'REDFT01'作爲第二種情況。 –
是的,我編輯了它。謝謝 – FacundoGFlores
好吧,不要編輯,因爲答案是關於原件。但無論如何,現在它看起來像縮放比例(因爲我看到的因素8) –