MATLAB和Python中的数组运算

2024-09-28 03:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一段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

在哪里, 方向=8, 比例=3, w=[1,-3,2], imfft=imfft2(图像), “filter”是一个包含矩阵元素的单元格数组,每个矩阵的大小与“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的相同功能吗?你知道吗


Tags: 代码inforrange矩阵filter方向比例
1条回答
网友
1楼 · 发布于 2024-09-28 03:22:58

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

相关问题 更多 >

    热门问题