MATLAB和Python中的数组运算

时间:2014-03-28 06:17:32

标签: python arrays matlab

我正在尝试将一段MATLAB代码转换为python。 MATLAB代码是

    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

其中,     orient = 8,     比例= 3,     w = [1,-3,2],     imfft = imfft2(图片),     '过滤器'是一个带有矩阵元素的单元格数组,每个矩阵的大小为' image'

我在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的相同功能以获取上述代码片段吗?

1 个答案:

答案 0 :(得分:0)

我认为你所做的是完全正确的。但是,MATLAB和numpy以不同方式表达多维数组。如果您使用的是rank-3数组,请逐个元素地比较python的s_lc[i,j,k]和MATLAB的s_lc(i+1,j+1,k+1)