Я переношу код Matlab/Octave на C. Одной из реализаций, которые мне нужно перенести, является преобразование DST. В Matlab/Octave это делается с помощью
A =[0.00000 4.24264 5.65685 7.07107 8.48528 0.00000]
res = dst(A)
ans =
22.3599 -4.7499 -4.4287 2.9465 -6.8864 1.9383
В C я сделал то, что написано в документации FFTW3:
n = 6;
fftw_plan plan = fftw_plan_r2r_1d( n, in, out, FFTW_RODFT10, FFTW_ESTIMATE);
fftw_execute ( plan );
где in
— входной массив. Результатом этого является out
:
42.588457
-9.899495
0.000000
2.449490
-11.411543
5.656854
Почему эти результаты такие разные? Любые идеи о том, что я делаю неправильно здесь, если таковые имеются?