accumarray

En juillet 2012, j’ai ENFIN trouvé l’utilité d’utiliser accumarray… les boules pour un MATLAB geek ! Cette fonction a été introduite avec MATLAB 7.0 (R14) en même temps que les fonctions cast, intmax, intmin,…. donc il était temps de s’y coller.

Je m’étais même promis d’y arriver dans ce billet Mon premier arrayfun.

  • Exemple simple :

Cette matrice là par exemple 2 lignes et 3 colonnes :

B = [0 0 0
0 0 -13]

On pourrait l’écrire en une ligne en faisant

B(2,3) = -13

mais truc de fou on peut aussi l’écrire en faisant:

accumarray([2,3],-13)
  • Maintenant avec un exemple plus compliqué

Imaginons qu’on veuille remplir une matrice 5 lignes et 4 colonnes comme ci-dessous:

0 0 0 0
8 0 0 0
8 0 0 8
0 0 0 0
0 0 0 8

Donc on a le chiffre 8 :
en ligne 2 colonne 1
en ligne 3 colonne 1 et 4
et en ligne 5 colonne 4

On écrira donc sous MATLAB :

chiffre = 8;
ligne = [ 2 3 3 5 ];
colonne = [ 1 1 4 4 ];
accumarray([ligne(:),colonne(:)],chiffre)

bon moi je m’en sers ainsi et je pense que j’ai détourné l’idée de base d’accumarray (Construct array with accumulation)

A vrai dire les exemples de la doc me sortent des yeux et je ne vois pas comment les utiliser dans la pratique.
Donc si vous avez d’autres exemple pratiques , je suis preneur!

2 réflexions au sujet de « accumarray »

Laisser un commentaire