Ich teste die Bibliothek nur mit einer diskreten Cosinus-Transformation.Verwendung von fftw3-Bibliothek für dct
#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;
}
Ich hoffe, das gleiche a
, oder vielleicht eine Annäherung zu erhalten, aber meine ouput ist folgende:
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
Es sieht aus wie in beiden Fällen Sie die Vorwärts ausführen verwandeln, nicht invers. Sie brauchen 'REDFT01' für den zweiten Fall, wenn ich das Dokument richtig lese –
Ja, ich habe es bearbeitet. Vielen Dank – FacundoGFlores
Nun, nicht bearbeiten, wie die Antworten über das Original sind. Aber wie auch immer, jetzt scheint es wie die Skalierung Sache (Faktor 8, wie ich sehe) –