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 <[email protected]>: > 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 <[email protected]>: >>> > >>> > 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
