我正在尝试将这行代码从 Python 转换为 MATLAB:
new_img[M[0, :] - corners[0][0], M[1, :] - corners[1][0], :] = img[T[0, :], T[1, :], :]
所以,很自然地,我写了这样的东西:
new_img(M(1,:)-corners(2,1),M(2,:)-corners(2,2),:) = img(T(1,:),T(2,:),:);
但当它到达该行时,它给了我以下错误:
请求的 106275x106275x3 (252.4GB) 数组超出最大数组大小
偏爱。创建大于此限制的数组可能需要很长时间
时间并导致 MATLAB 变得无响应。请参阅数组大小限制或
首选项面板以获取更多信息。
这让我相信它没有正确分配事物。 Img 最多是 1000 × 1500 RGB 图像。相同的代码在 Python 中运行时间不到 5 秒。如何像 MATLAB 中第一行代码那样进行向量赋值?
顺便说一下,为了避免这篇文章太长,我没有粘贴所有代码行。如果我需要添加任何其他内容,请告诉我。
Edit:以下是我希望我的代码执行的操作的解释(基本上,这就是 Python 代码执行的操作):
考虑这行代码。这不是真正的 MATLAB 代码,我只是想解释一下我想要做什么:
A([2 3 5], [1 3 5]) = B([1 2 3], [2 4 6])
它的解释如下:
A(2,1) = B(1,2)
A(3,1) = B(2,2)
A(5,1) = B(3,2)
A(2,3) = B(1,4)
A(3,3) = B(2,4)
A(5,3) = B(3,4)
...
...
...
相反,我希望它被这样解释:
A(2,1) = B(1,2)
A(3,3) = B(2,4)
A(5,5) = B(3,6)