一 写在前面:
对于一个数组,我们可以利用 “数组(标量)”或“数组(行标,纵标)”的形式来对一个数组进行单个元素的引用。而实际上,我们还可以一次性引用数组的多个元素,这即被称之为” 数组的子数组”。
注:以下均取
>> A=
1 2 3 4
5 6 7 8
9 10 11 12
二 形如:A(B)和A(B,C)
1:A(B),其中A,B均为数组(这里,我们认为行向量,列向量也是特殊的数组)
则B有3种形式:
(1). B为行向量:
例子如下:
>>B=[3,2,5,1];
>>A(B)
ans =
9 5 6 1
(2).B为列向量:
例子如下:
>>B=[3;2;5;1];
>>A(B)
ans =
9
5
6
1
(3). B为普通数组
>>B=[3,2;5,1];
>>A(B)
ans =
9 5
6 1
(4)总结:
数组 A(B) 的行列数均与B一样;
数组A(B)中的每个元素是以B中相应位置元素作为索引在A中的元素,如
第3种情况 A(B)中1行,1列元素=A(B(1,1));依此类推:数组A(B)中的m行,n列元素=A(B(m,n));
2. A(B,C) 其中 A,B,C 均为数组
则B,C所有可能性:
B,C均为向量;
B,C其中一个是向量一个是数组;
B,C均为数组。
(1) 以B,C均为数组这种情况为例:
>>B =
2 1
3 2
>>C =
4 1
3 2
>> A(B,C)
ans =
8 7 5 6
12 11 9 10
4 3 1 2
8 7 5 6
注意:MATLAB读取数组元素是按列优先的
A(B,C)的元素个数:B的元素个数×C元素个数;
子数组 A(B,C) 行数等于B中元素数,列数等于C中元素数;
B,C决定 该子数组元素的方式:
如上例子:
B决定了:子数组A(B,C)的第1,2,3,4行的元素分别在A中的 第2,3,1,2行中找;
C决定了:子数组A(B,C)的第1,2,3,4列的元素分别在A中的 第 4,3,1,2列中找
对 A(B,C)以表格形式画出:A(B,C)中各元素:
A(2,4)=8
A(2,3)=7
A(2,1)=5
A(2,2)=6
A(3,4)=12
A(3,3)=11
A(3,1)=9
A(3,2)=10
A(1,4)=4
A(1,3)=3
A(1,1)=1
A(1,2)=2
A(2,4)=8
A(2,3)=7
A(2,1)=5
A(2,2)=6
(2).B,C中一个为数组,一个为向量及均为向量的情况
按向量为特殊数组处理,依上类推,可得,这里不多说。
三 最后小结
一次性引用数组中的多个元素是MATLAB的一大特色,这使得在很多情况下,我们不必用循环语句来达到引用,处理数组中多个元素的目的。大大方便了我们对数组中的多个元素进行赋值,修改元素值。