对于 RECTANGULAR 数组,使用fftw的r2r转换和MATLAB的dct2的二维DCT的答案结果完全不同。
假设in
是m x n
矩形数组。我用两种方式计算二维DCT。
fftw_plan p = fftw_plan_r2r_2d(m,n,in,out,FFTW_REDFT10,FTW_REDFT10,FFTW_PATIENT);
fftw_execute(p);
dct2(in);
当m=n
两个结果相差时,某些简单的缩放数字与sqrt(m*n)
成比例。但是当m
和n
不相等时,这两个结果似乎无关。
是否有任何简单的转换可以将fftw转换为MATLAB< dct2的输出?
答案 0 :(得分:1)
回答我自己的问题:MATLAB以column major顺序存储矩阵,fftw(使用C)表示行主格式的矩阵。因此,应该交换fftw_plan_r2r_2d
的前两个参数。也就是说,代码应该是:
fftw_plan p = fftw_plan_r2r_2d(n, m,in,out, FFTW_REDFT10, FTW_REDFT10, FFTW_PATIENT);
fftw_execute(p);