使用向量作为matlab中矩阵的索引

时间:2015-01-12 21:31:35

标签: matlab

我理解一般的想法,但给定一个三维向量x,以下是什么意思?

x(:,:,[2:end,end])

我知道有非常相似的问题,但他们要求代码实现所需的行为,而我需要知道此代码指定的行为。

1 个答案:

答案 0 :(得分:0)

该代码只是创建一个新的3D矩阵,以便我们将切片2,3,4复制到N,其中N是矩阵的最后一个切片,我们也会复制最后一个切片N,并将其放在3D矩阵的末尾,作为输出的最终切片。向量[2:end end]很重要。在前两个维度上执行:意味着我们需要所有行和所有列。对于索引到矩阵的第三个参数,我们指定了一个2:end向量,然后是附加 endend是此上下文中的特殊关键字,用于访问该特定维度中的最后一个可能元素。在这种情况下,end将对应于矩阵的最后一个切片。因此,执行2:end意味着您希望访问切片2,3,直到最后一个切片,然后您希望再次访问最后一个切片。

您可以使用一些示例输入始终在命令提示符中输出矩阵的外观。考虑以下3D矩阵:

>> V = reshape(1:24, 4, 2, 3)

V(:,:,1) =

     1     5
     2     6
     3     7
     4     8


V(:,:,2) =

     9    13
    10    14
    11    15
    12    16


V(:,:,3) =

    17    21
    18    22
    19    23
    20    24

这样做的:

V(:,:,[2:end end])

给出:

>> V(:,:,[2:end end])

ans(:,:,1) =

     9    13
    10    14
    11    15
    12    16


ans(:,:,2) =

    17    21
    18    22
    19    23
    20    24


ans(:,:,3) =

    17    21
    18    22
    19    23
    20    24

如您所见,我们创建另一个3D矩阵,以便省略第一个切片,但复制切片2,3,......直到最后一个切片N,然后再创建一个复制切片N的附加切片。