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 <jcode...@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

Reply via email to