2016-02-01 13 views

Odpowiedz

6

Dzieje się tak dlatego, że rozmiary macierzy są niezgodne. W szczególności v nie zawiera wystarczającej liczby kolumn, aby dopasować m. I jego transpozycji

Więc to nie robi praca

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

podczas gdy to robi

m = Matrix(0, 3) 
v = [2 3 4] 
m = cat(1, m, v) # or m = [m; v] 
>> 1x3 Array{Any,2}: 
>> 2 3 4 

a jeśli uruchomić go ponownie tworzy kolejny wiersz

m = cat(1, m, v) # or m = [m; v] 
>> 2x3 Array{Any,2}: 
>> 2 3 4 
>> 2 3 4 
+1

Albo jeśli chcesz utrzymać 'v = [2,3,4]' Format można dołączyć wiersz używając 'm = [m; v '] '. – Rob

2

użyć vcat (CONCATENATE pionowo) funkcja:

help?> vcat 
search: vcat hvcat VecOrMat DenseVecOrMat StridedVecOrMat AbstractVecOrMat levicivita is_valid_char @vectorize_2arg 

    vcat(A...) 

    Concatenate along dimension 1 

Zauważ, że musisz przetransponować wektor v, czyli. v', inaczej dostaniesz DimensionMismatch błąd:

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 

Uwaga: komentarzach; # ' są tylko po to, aby podświetlanie składni działało dobrze.

0

Czy to nie jest Matrix tworzy dwuwymiarową tablicę w Julia? Jeśli spróbujesz użyć m = [0, 3], które tworzy dla ciebie jednowymiarowy Vector, możesz dołączyć go do [m; v].

myślę użyciu [m v] jest utworzyć dwuwymiarową tablicę, a także, od Julia Dokument

Powiązane problemy