[I(2) rand(2,100)]
gives a sparse matrix. May I ask why?
I am not sure if you are asking about implementation details or design choices.
As for the first, if you look at
@edit [I(2) rand(2,100)]
you will find that it takes you to a method for sparse concatenation. The magic happens here:
https://github.com/JuliaLang/julia/blob/1e39c69a550c9be945db2ccf1ab6ded02c404ec4/stdlib/SparseArrays/src/sparsevector.jl#L1065
As for the design choice: yes, for your case it is dense, but in other cases with a large I
it would be sparse, and it is hard to predict the best solution from the type. Perhaps you can clarify with
[Matrix(I(2)) rand(2,100)]
Thanks, I was interested in both aspects.
In terms of the design choice, I was a first surprised since [I rand(2,100)]
gives a dense matrix.
Upon closer study, I realise that I(2)
is just Diagonal([1,1])
which explains the origin of the [I(2) rand(2,100)]
behaviour.
Well, I don’t need I(n)
other than in some Kronecker products.