这是您正在执行的非常标准的 MATLAB 操作。当您有一个向量或矩阵时,您可以提供另一个向量或矩阵以访问特定值。在 MATLAB 中访问值不仅限于单个索引(即A(1), A(2) 等)。
例如,你有一个a = [1 2 3 4] 的向量。当您尝试使用b 访问向量时,您实际上所做的是查找。输出的大小与b 基本相同,您正在做的是创建一个有 3 行的矩阵,每个元素访问第一个、第二个和第三个元素。您不仅可以对向量执行此操作,还可以对矩阵执行此操作。
请记住,当您对矩阵执行此操作时,您会以列主要格式访问元素。例如,假设我们有这个矩阵:
A = [1 2
3 4
5 6
7 8]
A(1) 为 1,A(2) 为 3,A(3) 为 5,以此类推。您将从第一列开始,增加索引将遍历第一列。一旦你达到第 5 个索引,它就会跳到下一列。所以A(5) 是 2,A(6) 是 4,以此类推。
这里有一些例子可以加深你的理解。让我们定义一个矩阵A,这样:
A = [5 1 3
7 8 0
4 6 2]
以下是一些 MATLAB 代码,可加强您对此类索引的理解:
A = [5 1 3; 7 8 0; 4 6 2]; % 3 x 3 matrix
B = [1 2 3 4];
C = A(B); % C should give [5 7 4 1]
D = [5 6 7; 1 2 3; 4 5 6];
E = A(D); % E should give [8 6 3; 5 7 4; 1 8 6]
F = [9 8; 7 6; 1 2];
G = A(F); % G should give [2 0; 3 6; 5 7]
因此,以这种方式访问元素时的输出是您指定为参数的向量或矩阵的大小。
为了完整起见,让我们对向量进行此操作:
V = [-1 9 7 3 0 5]; % A 6 x 1 vector
B = [1 2 3 4];
C = V(B); % C should give [-1 9 7 3]
D = [1 3 5 2];
E = V(D); % E should give [-1 7 0 9]
F = [1 2; 4 5; 6 3];
G = V(F); % G should give [-1 9; 3 0; 5 7]
注意:您必须确保您没有提供会使访问超出范围的索引。例如,如果您尝试在示例中指定索引 5,则会出现错误。此外,如果您在我的示例中尝试了大于 9 的任何内容,它也会给您一个错误。该 3 x 3 矩阵中有 9 个元素,因此指定任何大于 9 的列主索引都会给您一个超出范围的错误。