我正在尝试将一段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的相同功能以获取上述代码片段吗?
答案 0 :(得分:0)
我认为你所做的是完全正确的。但是,MATLAB和numpy以不同方式表达多维数组。如果您使用的是rank-3数组,请逐个元素地比较python的s_lc[i,j,k]
和MATLAB的s_lc(i+1,j+1,k+1)
。