如何将一个向量作为一行附加到Julia矩阵?

时间:2016-02-01 09:23:36

标签: multidimensional-array julia

我最初有一个空矩阵:

m = Matrix(0, 3)

和我要添加的行:

v = [2,3]

我尝试这样做:

[m v]

但是我收到了错误

 ERROR: ArgumentError: number of rows of each array must match

这样做的正确方法是什么?

3 个答案:

答案 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