2014-03-28 36 views
1

我想将一段MATLAB代码转换为python。的MATLAB代码是在MATLAB和Python中的数组操作

for o = 1:orient    
     for s = 1:scale 

      M(:,:,s) = ifft2(imfft .* filter{s,o}); 

      s_lc(:,:,o) = s_lc(:,:,o).*(M(:,:,s).^w(s)); 

     end 

    end 

其中, 定向= 8, 规模= 3, W = [1,-3,2], imfft = imfft2(图像), '过滤器' 是一个细胞阵列矩阵元素,每个矩阵是“图像”的大小

我已经写在python的等效代码,它看起来像的,

for o in range(orient): 
    for s in range(scale): 
     M[:,:,s] = np.fft.ifft2 (imfft * filter[s][o]) 
     s_lc[:,:,o] = (s_lc[:,:,o])*((M[:,:,s])**w[s]) 

这里所有的输入变量保持相同的保存数值为MATLAB。但是s_lc的值与完整迭代后的MATLAB不一样。

有人可以帮助我在上面的代码片段中复制Python的MATLAB中相同的功能吗?

回答

0

我想你在做什么是完全正确的。但是,MATLAB和numpy不同地表达多维数组。如果您使用的是rank-3阵列,请比较python的s_lc[i,j,k]和MATLAB元素的s_lc(i+1,j+1,k+1)