multiplication of certain values using logical array

11 vues (au cours des 30 derniers jours)
Rachel
Rachel le 2 Fév 2012
Modifié(e) : Jon le 26 Sep 2013
Hi all,
I have a matrix from which I have derived a logical array. What I'd like to do is multiply true values in the original matrix by -1. I can change these values to a constant value but I can't figure out how to multiply the existing value.
I should add that I'm after a vectorisation rather than loops to quicken my script.
thanks in advance,
Rachel

Réponse acceptée

Amit Davidi
Amit Davidi le 2 Fév 2012
If A is your original matrix and fltr is the derived logical array (having the same dimensions as A), than:
A(fltr) = -A(fltr);
Should do the trick.
(I think Andrei might have misunderstood your question. Or did I?...)
  1 commentaire
Rachel
Rachel le 2 Fév 2012
thanks, I knew there was a simple way somehow!

Connectez-vous pour commenter.

Plus de réponses (2)

Rachel
Rachel le 2 Fév 2012
but this changes every value? (andrei) - I need to change just the values which are true in the logical.e.g.
A = 1,2,3;4,5,6;7,8,9 % original matrix
logical = 1,0,0;0,1,1;1,1,0 % logical array
B = -1,2,3;4,-5,-6;-7,-8,9 % A where the values sharing the same position of logical true have been multiplied by -1.
thanks
Rachel

Amit Davidi
Amit Davidi le 2 Fév 2012
Of course, it'll change only the values where the logical array is true. Note, however, that the command
B = -A(fltr);
would not give you what you want! This will result in a column vector of the changed values.

Catégories

En savoir plus sur Feature Detection and Extraction dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by