Результат FFTW 1D, сохраненный транспонированным способом

Мне интересно, можно ли сохранить транспонированную матрицу 1D FFT-вызова из FFTW. Рассмотрим мою матрицу nrows_1 x w_size. В тот момент, когда она хранится в кусках размера w_size

for (ix = 0 ; ix < nrows_1 ; ix++)
 {
 plan = fftw_plan_dft_1d(w_size, &source_data[ix*w_size], &transposed_data[ix*w_size],
 FFTW_FORWARD, FFTW_ESTIMATE);
 fftw_execute(plan);
 }

Поэтому я хотел бы транспонировать матрицу результатов с помощью вызова FFTW.

1 ответ

Вы можете использовать Advanced Complex DFT FFTW. Все dft могут выполняться сразу благодаря параметру howmany и выход транспонируется, если параметры ostride и odist установлены правильно.

Следующий код демонстрирует, как он работает. Он скомпилирован gcc main.c -o main -lfftw3 -lm:

#include <fftw3.h>
#include <stdio.h>

int main(int argc, char* argv[]){

 int n=9;
 int m=4;

 fftw_complex *datasource=fftw_malloc(sizeof(fftw_complex)*m*n);
 fftw_complex *dataoutput=fftw_malloc(sizeof(fftw_complex)*m*n);

 int i,j;
 for(i=0;i</stdio.h></fftw3.h>
<p> Думаю, мой ответ слишком поздно, чтобы быть полезным...</p>

licensed under cc by-sa 3.0 with attribution.