Question

Il doit être simple, mais étonnamment je ne pouvais pas trouver une réponse à ce problème ici ou par essais et erreurs.
Je veux obtenir des valeurs sur une matrice (selon certaines conditions) et placer les valeurs dans un vecteur. Je dois aussi les indices des valeurs en indice correspondant. Il y a beaucoup de données si les boucles sont éteintes.

Ceci est une réponse correcte (mais itérative):

[I,J] = find(A > 5);
values = zeros(numel(I),1);
for i=1:numel(I)
    values(i) = A(I(i),J(i));
end

J'ai essayé values = A(I,J) mais c'est n par n au lieu de n par 1.

Était-ce utile?

La solution

Vous pouvez traiter implicitement la matrice comme un vecteur ( indexation linéaire ):

I = find(A > 5);
values = A(I);

Notez que vous pouvez le faire plus efficacement avec logique indexation :

values = A(A > 5);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top