I filed https://github.com/JuliaLang/julia/issues/6676
-viral On Monday, April 28, 2014 4:04:33 AM UTC+5:30, Simon Kornblith wrote: > > If diag is passed a vector rather than a matrix, we already give a good > error message: > > julia> diag([1, 2, 3, 4]) > ERROR: use diagm instead of diag to construct a diagonal matrix > in diag at linalg/generic.jl:49 > > It wouldn't hurt to have this in the docs, though. > > On Sunday, April 27, 2014 4:07:52 PM UTC-4, Andreas Noack Jensen wrote: >> >> I agree. It would probably avoid some confusion if the documentation was >> a little longer and pointed to diagm and Diagonal. >> >> >> 2014-04-27 22:02 GMT+02:00 Ivar Nesje <iva...@gmail.com>: >> >>> This difference should be explained in the documentation for diag >>> >>> The current documentation is kind of short: >>> >>> Base.diag(M[, k]) >>> The "k"-th diagonal of a matrix, as a vector. >>> >>> Ivar >>> >>> kl. 21:54:43 UTC+2 søndag 27. april 2014 skrev John Code følgende: >>> >>>> Thank you. >>>> >>>> On Sunday, April 27, 2014 11:49:12 PM UTC+4, Andreas Noack Jensen wrote: >>>>> >>>>> Hi John >>>>> >>>>> In julia, the function diag extract the diagonal of a matrix and if >>>>> the matrix is rectangular, it extracts the diagonal of the largest square >>>>> sub matrix. Note that in julia, [1 2 3 4] is not vector but a matrix. To >>>>> construct a matrix from a vector you can either use the function diagm, >>>>> which does what you expected diag did, >>>>> >>>>> julia> diagm([1,2,3,4]) >>>>> 4x4 Array{Int64,2}: >>>>> 1 0 0 0 >>>>> 0 2 0 0 >>>>> 0 0 3 0 >>>>> 0 0 0 4 >>>>> >>>>> but it is often better to use Diagonal, which creates a special >>>>> Diagonal matrix, >>>>> >>>>> julia> Diagonal([1,2,3,4]) >>>>> >>>>> 4x4 Diagonal{Int64}: >>>>> 1 0 0 0 >>>>> 0 2 0 0 >>>>> 0 0 3 0 >>>>> 0 0 0 4 >>>>> >>>>> >>>>> 2014-04-27 21:40 GMT+02:00 John Code <jcod...@gmail.com>: >>>>> > >>>>> > Hi all, >>>>> > I would like to ask why there is a difference between Octave diag >>>>> function >>>>> > and the function that julia provide. For example, in the following >>>>> Octave session I get: >>>>> > >>>>> > ============================ >>>>> > octave:1> v = [1 2 3 4] >>>>> > v = >>>>> > >>>>> > 1 2 3 4 >>>>> > >>>>> > octave:2> a = diag(v) >>>>> > a = >>>>> > >>>>> > Diagonal Matrix >>>>> > >>>>> > 1 0 0 0 >>>>> > 0 2 0 0 >>>>> > 0 0 3 0 >>>>> > 0 0 0 4 >>>>> > ============================= >>>>> > >>>>> > But in Julia I get: >>>>> > >>>>> > ============================= >>>>> > julia> v = [1 2 3 4] >>>>> > 1x4 Array{Int64,2}: >>>>> > 1 2 3 4 >>>>> > >>>>> > julia> a = diag(v) >>>>> > 1-element Array{Int64,1}: >>>>> > 1 >>>>> > >>>>> > >>>>> > ============================= >>>>> > >>>>> > >>>>> > Why is this the case and how to get a similar effect of the octave >>>>> code. >>>>> > Thank you. >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Med venlig hilsen >>>>> >>>>> Andreas Noack Jensen >>>>> >>>> >> >> >> -- >> Med venlig hilsen >> >> Andreas Noack Jensen >> >