# 数组索引
Syslab 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素,请使用索引。
以 4×4 幻方矩阵 A 为例:
A = magic(4)
1
A =
4×4 Matrix{Int64}:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
1
2
3
4
5
6
2
3
4
5
6
引用数组中的特定元素有两种方法。最常见的方法是指定行和列下标,例如
A[4, 2]
1
ans = 14
1
另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列:
A[8]
1
ans = 14
1
使用单一下标引用数组中特定元素的方法称为线性索引。
如果尝试在赋值语句右侧引用数组外部元素,Syslab 会引发错误。
test = A[4,5]
BoundsError: attempt to access 4×4 Matrix{Int64} at index [4, 5]
1
2
3
2
3
不过,您可以在赋值语句左侧指定当前维外部的元素。数组大小会增大以便容纳新元素。
A = [A zeros(Int, 4)]
A[4, 5] = 17
1
2
2
A =
4×5 Matrix{Int64}:
16 2 3 13 0
5 11 10 8 0
9 7 6 12 0
4 14 15 1 17
1
2
3
4
5
6
2
3
4
5
6
要引用多个数组元素,请使用冒号运算符,这使您可以指定一个格式为 start:end 的范围。例如,列出 A 前三行及第二列中的元素:
A[1:3, 2]
1
ans =
3-element Vector{Int64}:
2
11
7
1
2
3
4
5
2
3
4
5
单独的冒号(没有起始值或结束值)指定该维中的所有元素。例如,选择 A 第三行中的所有列:
A[3, :]
1
ans =
5-element Vector{Int64}:
9
7
6
12
0
1
2
3
4
5
6
7
2
3
4
5
6
7
此外,冒号运算符还允许您使用较通用的格式 start:step:end 创建等距向量值。
B = Vector(0:10:100)
1
B =
11-element Vector{Int64}:
0
10
20
30
40
50
60
70
80
90
100
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
如果省略中间的步骤(如 start:end 中),Syslab 会使用默认步长值 1。