2016-02-01 21 views

Trả lời

6

Đó là do kích thước ma trận của bạn không khớp. Cụ thể v không chứa đủ cột để khớp với m. Và nó hoán

Vì vậy, điều này không làm việc

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

trong khi điều này

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

và nếu bạn chạy nó một lần nữa nó tạo ra một hàng

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

Hoặc nếu bạn muốn duy trì của bạn 'v = [2,3,4]' định dạng mà bạn có thể thêm hàng sử dụng 'm = [m; v '] '. – Rob

2

Sử dụng vcat (concatenate theo chiều dọc) chức năng:

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

    vcat(A...) 

    Concatenate along dimension 1 

Lưu ý bạn phải chuyển đổi véc tơ v, tức là. v', khác bạn nhận được một lỗi 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 

Lưu ý: các ý kiến; # ' chỉ có để làm nổi bật cú pháp hoạt động tốt.

0

Đó có phải là Matrix tạo mảng hai chiều ở Julia không? Nếu bạn thử với m = [0, 3], tạo ra một chiều Vector cho bạn, bạn có thể nối nó theo [m; v].

Tôi nghĩ rằng sử dụng [m v] đang tạo ra một mảng hai chiều là tốt, từ Julia Document

Các vấn đề liên quan