Я пытаюсь реализовать 1D БПФ 2D-матрицы с использованием 1D вещественных и сложных БПФ, пока только в первом столбце. Но после преобразования первого столбца получается, что мнимая часть комплексного результата помещается во второй столбец.
Мой код:
float in[] = {0, 0, 0,
1, 1, 1,
2, 2, 2,
3, 3, 3,
4, 4, 4,
5, 5, 5,
6, 6, 6,
7, 7, 7,
8, 8, 8};
fftwf_plan p1;
int rank = 1;
int n[]={8}; // Num of elements in column
int howmoney = 1; // Num of column
int idist=1, odist=1;
int istride = 3, ostride=3;
int *inembed=n, *onembed=n;
p1 = fftwf_plan_many_dft_r2c(rank, n, howmoney, in, inembed, istride, idist, (fftwf_complex*)in, onembed, ostride, odist, FFTW_ESTIMATE);
fftwf_execute(p1);
printf("\n");
for(int i=0; i<7; i++){
printf("%2d ", i);
for(int j=0; j<3; j++){
printf("%10.5f", in[i*3+j]);
}
printf("\n");
}
fftwf_destroy_plan(p1);
Результат
0 28.00000 0.00000 0.00000
1 1.00000 1.00000 1.00000
2 -4.00000 9.65685 2.00000
3 3.00000 3.00000 3.00000
4 -4.00000 4.00000 4.00000
5 5.00000 5.00000 5.00000
6 -4.00000 1.65685 6.00000
Как сделать так, чтобы результат преобразования помещался в тот же столбец, что и исходные данные, и не портил результат в другихстолбцы? То есть
0 28.00000 0.00000 0.00000
1 0.00000 1.00000 1.00000
2 -4.00000 2.00000 2.00000
3 9.65685 3.00000 3.00000
4 -4.00000 4.00000 4.00000
5 4.00000 5.00000 5.00000
6 -4.00000 6.00000 6.00000
1.65685