级联
从较小的矩阵构建矩阵通常很有用。
水平连接
矩阵(和向量,被视为列向量)可以使用 hcat
函数进行水平连接。
julia> hcat([1 2; 3 4], [5 6 7; 8 9 10], [11, 12])
2×6 Array{Int64,2}:
1 2 5 6 7 11
3 4 8 9 10 12
有方便的语法,使用方括号表示法和空格:
julia> [[1 2; 3 4] [5 6 7; 8 9 10] [11, 12]]
2×6 Array{Int64,2}:
1 2 5 6 7 11
3 4 8 9 10 12
这种表示法可以与线性代数中使用的块矩阵的符号紧密匹配:
julia> A = [1 2; 3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> B = [5 6; 7 8]
2×2 Array{Int64,2}:
5 6
7 8
julia> [A B]
2×4 Array{Int64,2}:
1 2 5 6
3 4 7 8
请注意,你不能使用 []
语法水平连接单个矩阵,因为这会创建一个矩阵的单元素向量:
julia> [A]
1-element Array{Array{Int64,2},1}:
[1 2; 3 4]
垂直连接
垂直级联就像水平连接,但在垂直方向。垂直连接的功能是 vcat
。
julia> vcat([1 2; 3 4], [5 6; 7 8; 9 10], [11 12])
6×2 Array{Int64,2}:
1 2
3 4
5 6
7 8
9 10
11 12
或者,方括号表示法可以使用分号 ;
作为分隔符:
julia> [[1 2; 3 4]; [5 6; 7 8; 9 10]; [11 12]]
6×2 Array{Int64,2}:
1 2
3 4
5 6
7 8
9 10
11 12
矢量也可以垂直连接; 结果是一个向量:
julia> A = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> B = [4, 5]
2-element Array{Int64,1}:
4
5
julia> [A; B]
5-element Array{Int64,1}:
1
2
3
4
5
可以组合水平和垂直连接:
julia> A = [1 2
3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> B = [5 6 7]
1×3 Array{Int64,2}:
5 6 7
julia> C = [8, 9]
2-element Array{Int64,1}:
8
9
julia> [A C; B]
3×3 Array{Int64,2}:
1 2 8
3 4 9
5 6 7