2016-02-01 5 views
6

私は最初は空行列を持つ:ベクトルを行としてジュリア行列に追加する方法はありますか?

m = Matrix(0, 3) 

と私は追加したい行:

v = [2,3] 

私はこれを行うにしてみてください。

[m v] 

をしかし、私はエラーを取得します

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

これを行う適切な方法は何ですか?あなたの行列の大きさが一致しないためである

答えて

6

。具体的には、vにmに一致する列が十分にありません。これは

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

から、同様に2次元配列を作成する場合、またはあなたが 'V = [2,3,4]'フォーマットを維持したい場合は、使用して行を追加することができると思います'm = [m; v '] '。 – Rob

2

vcat(CONCATENATEを使用して別の行を作成するのに対し、そのので、このdoesntの仕事

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)") 

を転置垂直方向)機能:

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 

注:コメント。 # 'は、構文の強調表示をうまく機能させるためのものです。

0

Matrixはジュリアの2次元配列を作成することはありませんか? 1次元のVectorを作成するm = [0、3]を試した場合は、[m; v]で追加できます。

私は[m v]を使用すると、ジュリア・ドキュメント

関連する問題