필터 지우기
필터 지우기

multiplication of certain values using logical array

조회 수: 19 (최근 30일)
Rachel
Rachel 2012년 2월 2일
편집: Jon 2013년 9월 26일
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

채택된 답변

Amit Davidi
Amit Davidi 2012년 2월 2일
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
Rachel
Rachel 2012년 2월 2일
thanks, I knew there was a simple way somehow!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Rachel
Rachel 2012년 2월 2일
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 2012년 2월 2일
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.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by