我使用了fftw 3的FFTW_RODFT00函数,但是它非常慢(正如他们在文档.fftw3 2.5.2 Real even/odd DFTs中提到的)。
// N->Array length, input->Input Array, output->Output Array
fftw_plan plan = fftw3_r2r_1d(N, input, output, FFTW_RODFT, FFTW_ESTIMATE);
fftw_execute(plan);
//using output...
fftw_destroy_plan(plan);
fftw_cleanup();
我试着手动转换dst函数,但它是O(n^2)算法,所以它也很慢。
如何使用FFT算法计算快速离散正弦变换,而不使用DST Type-1函数?
1条答案
按热度按时间pjngdqdw1#
我发现了一种使用FFTW3的FFT库函数计算离散正弦变换的方法。但我应该说它仍然比MATLAB dst()函数慢(我仍然不知道为什么)。让我简单地解释一下我所做的:
我知道这个算法并不完美,但我正在努力加快速度,并使一个干净。对于速度差异MATLAB的fft()函数和FFTW的FFT函数仍然是一个问题。我将打开一个新的问题。