0

我正在做非常简单的矩阵索引示例。代码如下

>> A=[ 1 2 3 4 ; 5 6 7 8 ; 9 10 11  12  ]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12

>> A(end, end-2)   

ans =

    10

>> A(2:end, end:-2:1)

ans =

     8     6
    12    10

在这里我有点困惑。当我使用 A(end, end-2) 它时,直到第一列需要两个差异,当只剩下一列时,没有进一步处理,但是当我使用 A(2:end, end:-2:1)它 时,它是6 10 如何打印 8 12 的,而只剩下一列,我们必须采取差异两个从右到左,请有人解释这个简单的点

4

2 回答 2

1

选择A(end, end-2)内容为:获取 A 的最后一行中出现在第 4(end)-2=2 列中的元素

选择A(2:end, end:-2:1)类似地读取:从第 2 行到第 4 行(结束)中获取元素,并从最后一列开始以 2 的跳跃向后移动,即 4 然后 2。

要检查索引,只需将分别在 row 和 col 位置中找到的endwithsize(A,1)或if 替换。size(A,2)

于 2013-09-16T20:55:29.430 回答
1

首先是一般的东西:end只是索引的占位符,即给定数组维度中的最后一个位置。例如,对于任意数组A(end,1),将选择第 1 列中的最后一个元素,A(1,end)并将选择第一行中的最后一个元素。

在您的示例中,A(end, end-2)在最后一行的最后一行前两列中选择一个元素。

解释一个语句,例如

A(2:end, end:-2:1)

它可能有助于end用最后一行/列元素的实际索引替换,所以这相当于

A(2:3, 4:-2:1)

此外4:-2:1等效于列表4,2,因为我们指示列表从 4 开始,以 2 的步长递减,直到(最小)1。所以这相当于

A([2 3],[4 2])

最后,以下索引组合由 暗示A([2 3],[4 2])

 A(2,4)   A(2,2)
 A(3,4)   A(3,2)
于 2013-09-16T20:56:34.053 回答