Arrays Matlab:矩阵索引逻辑

Arrays Matlab:矩阵索引逻辑,arrays,matlab,matrix-indexing,Arrays,Matlab,Matrix Indexing,我正在做非常简单的矩阵索引示例。其中代码如下所示 >> 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

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

>> 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
虽然只剩下一列,我们必须从右到左取两列的差,请有人解释一下这个简单的点

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

选择
A(2:end,end:-2:1)
的内容类似于:获取第2行到第4行(end)中的元素,并从最后一列开始,以两次跳跃的方式向后移动,即4到2


要检查索引,只需将
end
替换为
size(A,1)
size(A,2)
(如果分别位于行和列位置)。

首先,一般情况是:
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)
A([2 3],[4 2])
此外,
4:-2:1
相当于列表
4,2
,因为我们指示列表从4开始,以2的步长递减,直到(最小)1。所以这相当于

A(2:3, 4:-2:1)
A([2 3],[4 2])
最后,
A([23],[42])
暗示了以下指数组合: