【问题标题】:How do I get the index of a matrix that is stored in a 4D matrix?如何获取存储在 4D 矩阵中的矩阵的索引?
【发布时间】:2019-04-16 18:54:23
【问题描述】:

我正在编写一些代码,用于存储灰度图像,该图像被拆分为 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 块。在我看来这是可以理解的,但也许对于编程来说,这是低效的,应该改变。如果是这样,您会建议研究什么?

谢谢!

【问题讨论】:

  • 对于索引问题,我可以推荐this Q/A,它列出了所有不同类型的索引。
  • 这个索引 Q/A 没有指定关于多维数组的任何内容,仅指定二维数组。

标签: matlab matrix multidimensional-array indexing


【解决方案1】:

您可以遍历任意维度的矩阵索引,然后使用ind2sub 将其映射到下标。基本上,语法是

[id1,id2,id3,id4] = ind2sub(size(my4Dmatrix, i));

j 也有类似的东西。
不是你的问题,但你的循环方式似乎不太对劲。此外,您应该包括一个最小的工作示例,包括生成几个矩阵并使用正确的语法(您不能在 MATLAB 中以数字开头变量名)。

【讨论】:

    猜你喜欢
    • 2018-05-12
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2019-06-27
    相关资源
    最近更新 更多