Sparse knonecker product of large and several matrices

Hi,
I'm trying to create a sparse kronecker product without actually generating the kron product and then generating the sparse matrix. Is there a way to do this? For example
E=eye(100);
I=ones(20);
K=sparse(kron(E,I));
Right now the code first generates the kron product and then keeps on the information of non-zero elements. As I need to do this lots of time because I need to generate and keep in memory different K matrices (K1, K2, ... K200, for E1,...E200, and I1,...I200), the generation of the kron product uses all my memory. Is there anyway I could go from the E's and I's to the K's without generating the full matrices?
Thanks,

 Réponse acceptée

Matt J
Matt J le 26 Mar 2014
Modifié(e) : Matt J le 26 Mar 2014
E=speye(100);
I=ones(20);
K=kron(E,I);

3 commentaires

Matt J
Matt J le 26 Mar 2014
Modifié(e) : Matt J le 26 Mar 2014
I wonder if you even need K in any kind of matrix form, whether sparse or full. See this Kronecker product manipulation tool for an alternative
Below, I construct a KronProd operator Ko equivalent to your K matrix. Note the difference in memory consumption. Ko is less than 1 KB.
>> e=ones(20,1); Ko=KronProd({e,e.',1},1:3,[nan,nan,100]);
>> Whos K Ko
Name Size Kilobytes Class Attributes
K 2000x2000 641 double sparse
Ko 2000x2000 0.896 KronProd
Thanks!
Thanks, I'll look at this.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Sparse Matrices dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by