以下示例出现在MATLAB教程中:
X = [16 2 13;
5 11 8;
9 7 12;
4 14 1]
使用单个下标删除单个元素或元素序列,并将其余元素重新整形为行向量。所以:
X(2:2:10) = []
结果:
X = [16 9 2 7 13 12 1]
神秘的是,第4行的整个第2行和前两个元素已被删除,但我看不到已删除元素的位置与索引向量2:2:10
之间的对应关系。有人可以解释一下吗?
答案 0 :(得分:12)
您提供的示例显示linear indexing。当你有一个多维数组并给它一个标量或向量时,它会从上到下,从左到右沿着每列进行索引。以下是索引每个维度的示例:
mat = [1 4 7; ...
2 5 8; ...
3 6 9];
submat = mat(1:2, 1:2);
submat
将包含矩阵的左上角:[1 4; 2 5]
。这是因为子索引中的第一个1:2
访问第一个维度(行),第二个1:2
访问第二个维度(列),提取2乘2平方。如果你没有为每个维度提供一个索引,用逗号分隔,而只是一个索引,MATLAB将索引到矩阵,好像它是一个大的列向量:
submat = mat(3, 3); % "Normal" indexing: extracts element "9"
submat = mat(9); % Linear indexing: also extracts element "9"
submat = mat([1 5 6]); % Extracts elements "1", "5", and "6"
有关详细信息,请参阅MATLAB documentation。
答案 1 :(得分:0)
这很简单。
它基本上从这个例子中的第二个元素开始,并以2为步长上升到第十个元素(列方式)并删除相应的元素。其余元素导致行向量。