2016-02-01 9 views

risposta

6

Questo perché le dimensioni della matrice non corrispondono. Nello specifico v non contiene abbastanza colonne per abbinare m. E la sua trasposta

Quindi questo pretende molto lavoro

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

che questo fa

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

e se si esegue di nuovo si crea un'altra fila

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

Oppure, se si vuole mantenere il vostro 'v = [2,3,4]' formato è possibile aggiungere la riga utilizzando 'm = [m; v '] '. – Rob

2

Utilizzare il vcat (concatenare verticalmente):

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

    vcat(A...) 

    Concatenate along dimension 1 

Avviso dovete trasporre il vettore v, vale a dire. v', altrimenti si ottiene un errore di 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 

Nota: i commenti; # ' ci sono solo per fare in modo che l'evidenziazione della sintassi funzioni bene.

0

Non è che Matrix crea un array bidimensionale in Julia? Se provi con m = [0, 3], che crea per te un Vector unidimensionale, puoi aggiungerlo per [m; v].

Penso che utilizzando [m v] è creare un array bidimensionale così, dal documento Julia