矩形数组:Matlab dct2不匹配fftw_plan_r2r_2d与FFTW_REDFT10

时间:2014-09-10 06:11:36

标签: matlab fftw dct multidimensional-array

对于 RECTANGULAR 数组,使用fftw的r2r转换和MATLAB的dct2的二维DCT的答案结果完全不同。

假设inm x n矩形数组。我用两种方式计算二维DCT。

  1. 通过C-extension使用FFTW的r2r转换
  2.   

    fftw_plan p = fftw_plan_r2r_2d(m,n,in,out,FFTW_REDFT10,FTW_REDFT10,FFTW_PATIENT);

     fftw_execute(p);
    
    1. 使用MATLAB:dct2(in);
    2. m=n两个结果相差时,某些简单的缩放数字与sqrt(m*n)成比例。但是当mn不相等时,这两个结果似乎无关。

      是否有任何简单的转换可以将fftw转换为MATLAB< dct2的输出?

1 个答案:

答案 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);