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])
暗示了以下指数组合: