我最初有一个空矩阵:
m = Matrix(0, 3)
和我要添加的行:
v = [2,3]
我尝试这样做:
[m v]
但是我收到了错误
ERROR: ArgumentError: number of rows of each array must match
这样做的正确方法是什么?
答案 0 :(得分:8)
这是因为您的矩阵大小不匹配。特别是v不包含足以匹配m的列。它的转置
所以这不起作用
m = Matrix(0, 3)
v = [2,3]
m = cat(1, m, v) # or a = [m; v]
>> ERROR: DimensionMismatch("mismatch in dimension 2 (expected 3 got 1)")
虽然这样做
m = Matrix(0, 3)
v = [2 3 4]
m = cat(1, m, v) # or m = [m; v]
>> 1x3 Array{Any,2}:
>> 2 3 4
如果再次运行它会创建另一行
m = cat(1, m, v) # or m = [m; v]
>> 2x3 Array{Any,2}:
>> 2 3 4
>> 2 3 4
答案 1 :(得分:5)
使用vcat
(垂直连接)功能:
help?> vcat
search: vcat hvcat VecOrMat DenseVecOrMat StridedVecOrMat AbstractVecOrMat levicivita is_valid_char @vectorize_2arg
vcat(A...)
Concatenate along dimension 1
注意你必须转置矢量v
,即。 v'
,否则会收到DimensionMismatch
错误:
julia> v = zeros(3)
3-element Array{Float64,1}:
0.0
0.0
0.0
julia> m = ones(3, 3)
3x3 Array{Float64,2}:
1.0 1.0 1.0
1.0 1.0 1.0
1.0 1.0 1.0
julia> vcat(m, v') # '
4x3 Array{Float64,2}:
1.0 1.0 1.0
1.0 1.0 1.0
1.0 1.0 1.0
0.0 0.0 0.0
julia> v' # '
1x3 Array{Float64,2}:
0.0 0.0 0.0
julia> vcat(m, v)
ERROR: DimensionMismatch("mismatch in dimension 2 (expected 3 got 1)")
in cat_t at abstractarray.jl:850
in vcat at abstractarray.jl:887
注意:评论; # '
只是为了使语法高亮显示效果良好。
答案 2 :(得分:0)
不是Matrix
在Julia中创建了一个二维数组吗?如果您尝试使用m = [0,3],为您创建一维Vector
,则可以按[m; v]
附加它。
我认为使用[m v]
也可以创建一个二维数组,来自Julia Document