1

以下示例出现在 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]

神秘的是,整个第2行和第4行的前两个元素都被删除了,但是我看不到被删除元素的位置和索引向量的对应关系2:2:10。有人可以解释一下吗?

4

2 回答 2

12

您给出的示例显示了线性索引。当你有一个多维数组并给它一个标量或向量时,它会从上到下和从左到右沿每列索引。下面是索引到每个维度的示例:

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 文档

于 2009-02-21T02:58:30.323 回答
0

这很简单。

它基本上从本示例中的第二个元素开始,以 2 为步长到第十个元素(按列)并删除相应的元素。其余元素产生一个行向量。

于 2009-12-17T09:05:00.880 回答