我正在编写一些代码,借此存储灰度图像,该图像被分成4D阵列中的“块”。我将遍历4D数组中的所有“块”,并将基于相互比较的块内容执行计算。我只想比较彼此靠近的“块”,为此,我可以计算出“块”之间的距离,而不会遍历太远的块。为此,我需要在4D矩阵中每个“块”的索引,最终创建我的问题。
我的代码如下:
for i=4dmatrix1
for j=4dmatrix2
% Do calculations here involving the index of i
% and j in their respective matrices.
end
end
我有i和j,但我想分别在4dmatrix1和4d matrix2中找到它们的索引。 4dmatrix1和4dmatrix2是灰度图像,已分成20x20像素的“块”。 4dmatrix1和4dmatrix2中的每个矩阵都是图像1和图像2中的“块”。之所以使用这种方法存储数据的原因是,它仍然代表图像的形状,只是分成20x20块。在我看来,这是可以理解的,但是对于编程而言,这效率很低,应该更改。如果是这样,您会建议研究什么?
谢谢!
答案 0 :(得分:0)
您可以循环浏览任意维度的矩阵索引,然后使用ind2sub
将其映射到下标。基本上,语法是
[id1,id2,id3,id4] = ind2sub(size(my4Dmatrix, i));
与j类似。
这并不是您真正的问题,但是您的循环方式似乎不太正确。另外,您应该包括一个最小的工作示例,包括生成几个矩阵并使用正确的语法(不能在MATLAB中以数字开头变量名)。