矩形阵列:Matlab dct2与fftw_平面图_r2r_2d与fftw_REDFT10不匹配
对于矩形阵列,使用fftw的r2r变换和MATLAB的dct2进行二维DCT得到的结果是完全不同的 假设矩形阵列:Matlab dct2与fftw_平面图_r2r_2d与fftw_REDFT10不匹配,matlab,fftw,dct,multidimensional-array,Matlab,Fftw,Dct,Multidimensional Array,对于矩形阵列,使用fftw的r2r变换和MATLAB的dct2进行二维DCT得到的结果是完全不同的 假设in是一个mxn矩形阵列。我用两种方法计算二维DCT 通过C扩展使用FFTW的r2r转换 fftw_平面p=fftw_平面r2r_2d(m、n、in、out、fftw_REDFT10、FTW_REDFT10、fftw_患者) 使用MATLAB:dct2(in) 当m=n时,这两个结果的不同之处在于一些简单的标度数与sqrt(m*n)成比例。但是当m和n不相等时,这两个结果似乎并没有联系 是否有
in
是一个mxn
矩形阵列。我用两种方法计算二维DCT
dct2(in)代码>
m=n
时,这两个结果的不同之处在于一些简单的标度数与sqrt(m*n)
成比例。但是当m
和n
不相等时,这两个结果似乎并没有联系
是否有任何简单的转换将fftw的输出转换为MATLAB的dct2的输出?回答我自己的问题:MATLAB按顺序存储矩阵,而fftw(使用C)希望矩阵采用行主格式。因此,
fftw\u plan\u r2r\u 2d
的前两个参数应该交换。也就是说,代码应该是:
fftw_plan p = fftw_plan_r2r_2d(n, m,in,out, FFTW_REDFT10, FTW_REDFT10, FFTW_PATIENT);
fftw_execute(p);
我为此浪费了很多天。你不知道我有多感激。谢谢你,伙计!
fftw_plan p = fftw_plan_r2r_2d(n, m,in,out, FFTW_REDFT10, FTW_REDFT10, FFTW_PATIENT);
fftw_execute(p);