Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Фурье преобразование fftw_plan_many


Автор: ridaketel 18.9.2014, 16:11
Есть одномерный массив размером Len*Num где Len - количество точек в одном преобразовании, Num - общее количество преобразований. Данные в массиве расположены так: 
[1`я точка 1`го подмассива, 1`я точка 2`го подмассива, .....  1`я точка Num`го массива, 2` точка 1`го подмассива, 2`я точка 2`го подмассива, ....... , 2`я точка Num`го подмассива, ......, Len`я точка 1`го подмассива, Len`я точка 2`го подмассива, ....... , Len`я точка Num`го массива]. Т.е. в так называемом column-major формате. В библиотеке fftw для таких случаев существует функция fftw_plan_many_r2r. 
Код

fftw_r2r_kind kind[] = {FFTW_R2HC};
    int n[] = {fftLen};
    plan = fftw_plan_many_r2r(1,//rank
                                n,// *n length of transform n[] = {fftLen}
                                fftNum,//howmany  transforms 32768
                                sample,//input array
                                n,//NULL,//inembed
                                fftNum,//istride
                                1,//idist
                                result,//out
                                n,//NULL,//onembed
                                fftNum,//ostride
                                1,//odist
                                kind,//kind
                                FFTW_EXHAUSTIVE);//FFTW_MEASURE);//flags

Соответственно на выходе я хочу получить преобразованный массив, но преобразование работает правильно только когда Len=Num во всех остальных случаях получается какая то каша. Подскажите пожалуйста, где я накосячил? вот здесь http://stackoverflow.com/questions/6021740/how-do-i-use-fftw-plan-many-dft-on-a-transposed-array-of-data подобный случай, вроде как всё хорошо, но у меня не работает..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)