索引
下标
A 的行 i 和列 j 中的元素通过 A(i,j) 表示。例如,A(4,2) 表示第四行和第二列中的数字。在幻方矩阵中,A(4,2) 为 15。因此,要计算 A 第四列中的元素的总和,请键入
A=magic(4)
B=A(:,[1 3 2 4])
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
此外,还可以使用单一下标 A(k) 引用矩阵的元素。单一下标是引用行和列向量的常见方法。因此,在幻方矩阵中,A(8) 是另一种引用存储在 A(4,2) 中的值 15 的方法。
如果尝试使用矩阵外部元素的值,则会生成错误:
t = A(4,5)
索引超出矩阵维度。
相反,如果将值存储在矩阵外部元素中,则会增大大小以便容纳新元素:
X = A;
X(4,5) = 17
X =
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
冒号运算符
冒号 : 是最重要的 MATLAB® 运算符之一。它以多种不同形式出现。包含从 1 到 10 之间的整数的行向量:
1:10
ans =
1 2 3 4 5 6 7 8 9 10
要获取非单位间距,请指定增量。例如,
100:-7:50
ans =
100 93 86 79 72 65 58 51
0:pi/4:pi
ans =
0 0.7854 1.5708 2.3562 3.1416
包含冒号的下标表达式引用部分矩阵:A(1:k,j)表示 A 第 j 列中的前 k 个元素
A=magic(4)
A(1:3,2)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
ans =
2
11
7
计算第四列的总和:
A=magic(4);
sum(A(1:4,4))
ans =
34
但是,执行此计算有一种更好的方法。冒号本身引用矩阵行或列中的所有元素,而关键字 end 引用最后一个行或列。因此,计算 A 最后一列中的元素的总和:
A=magic(4)
sum(A(:,end))
ans =
34
串联
串联是连接小矩阵以便形成更大矩阵的过程。实际上,第一个矩阵是通过将其各个元素串联起来而构成的。成对的方括号[]
即为串联运算符。例如,从 4×4 幻方矩阵 A 开始,组成
B = [A A+32; A+48 A+16]
B =
16 3 2 13 48 35 34 45
5 10 11 8 37 42 43 40
9 6 7 12 41 38 39 44
4 15 14 1 36 47 46 33
64 51 50 61 32 19 18 29
53 58 59 56 21 26 27 24
57 54 55 60 25 22 23 28
52 63 62 49 20 31 30 17
结果会生成一个 8×8 矩阵,这是通过连接四个子矩阵获得的。
删除行和列
只需使用一对方括号即可从矩阵中删除行和列。删除 X 的第二列
A=magic(4)
X = A;
X(:,2) = []
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
X =
16 3 13
5 10 8
9 6 12
4 15 1
如果您删除矩阵中的单个元素,结果将不再是矩阵。因此,以下类似表达式
X(1,2) = []
将会导致错误。但是,使用单一下标可以删除一个元素或元素序列,并将其余元素重构为一个行向量。因此
X(2:2:10) = []
X =
16 9 2 7 13 12 1
标量扩展
可以采用多种不同方法将矩阵和标量合并在一起。
通过标量扩展,MATLAB 会为范围中的所有索引分配一个指定标量。例如,
B(1:2,2:3) = 0
将 B 的某个部分清零:
B =
7.5 0 0 4.5
-3.5 0 0 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5
find 函数
find 函数可用于确定与指定逻辑条件相符的数组元素的索引
。find 以最简单的形式返回索引的列向量。转置该向量以便获取索引的行向量。例如,
A=magic(4)
B=A(:,[1 3 2 4])
k = find(isprime(B))'
使用一维索引选取幻方矩阵中的质数的位置:
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
k =
2 5 9 10 11 13
使用以下命令按 k 确定的顺序将这些质数显示为行向量
A(k)
ans =
5 3 2 11 7 13
将 k 用作赋值语句的左侧索引时,会保留矩阵结构:
A(k) = NaN
A =
16 NaN NaN NaN
NaN 10 NaN 8
9 6 NaN 12
4 15 14 1