web-dev-qa-db-ja.com

ベクトルをJulia行列に行として追加するにはどうすればよいですか?

最初は空行列があります:

m = Matrix(0, 3)

そして私が追加したい行:

v = [2,3]

私はこれをやろうとします:

[m v]

しかし、エラーが発生します

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

これを行う適切な方法は何ですか?

8
becko

これは、マトリックスのサイズが一致しないためです。具体的には、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
8
Rob

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

注:コメント; # 'シンタックスハイライトをうまく機能させるためだけにあります。

6
SalchiPapa

MatrixはJuliaで2次元配列を作成しませんか? 1次元のVectorを作成するm = [0、3]を試してみると、[m; v]で追加できます。

[m v]を使用すると、Juliaドキュメントから2次元配列も作成されると思います。

0
Conta