2 votes

Manipulation de matrices éparses dans Matlab

Supposons que je dispose d'une matrice peu dense Sparstica qui est une concaténation verticale de plusieurs autres matrices éparses. Lorsque je tape Sparstica(:) j'obtiens une liste des éléments non nuls. Dans la colonne de gauche, se trouve l'indice de l'élément, dans la colonne de droite se trouve l'élément non nul.

Comment puis-je manipuler les i-ème et j-ème éléments non nuls de toutes les autres matrices à blocs éparses au milieu ? n-2 blocs ( n au total) ?


Annexé : Pour clarifier ce que j'entends par les éléments i et j de toute autre matrice éparse, supposons que j'ai

Sparstica = [A_1 ; A_2 ; A_3 ; ... ; A_n]

Il a été créé à partir de vertcat . Je dois maintenant prendre les i-ème et j-ème, disons les 3ème et 5ème, éléments non nuls de tous les autres matrice éparse de A_2 a A_{N-1} (Je sais que la notation pour cela n'est pas autorisée, mais c'est juste à titre de démonstration). J'aimerais réaliser ceci sin en utilisant si possible des boucles "for".

4voto

Florian Brucker Points 2383

Vous pouvez trouver les éléments non nuls en utilisant find :

>> A = speye(3)

A =

   (1,1)        1
   (2,2)        1
   (3,3)        1

>> I = find(A ~= 0)

I =

     1
     5
     9

Si vous avez besoin des indices au format ligne/colonne, utilisez ind2sub :

>> [X, Y] = ind2sub(size(A), I)

X =

     1
     2
     3

Y =

     1
     2
     3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X