我正在做非常简单的矩阵索引示例。代码如下所示
>> 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
打印{{1}},而只剩下一列,我们必须从右到左取两个差异,请有人解释这个简单点
答案 0 :(得分:1)
选择A(end, end-2)
读取:获取第4列中出现的A的最后一行中的元素(结束)-2 = 2 。
选择A(2:end, end:-2:1)
类似地读取:获取第2行到第4行(结束)中的元素,并从最后一列开始以2的跳跃向后跳,即4然后2。
要检查索引编制,只需将end
替换为size(A,1)
或size(A,2)
,如果分别位于行和列位置。
答案 1 :(得分: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。所以这相当于< / p>
A([2 3],[4 2])
最后,A([2 3],[4 2])
隐含了以下索引组合:
A(2,4) A(2,2)
A(3,4) A(3,2)