apply "IF" condition to a matrix whitout loop

Hi!
It is possible to use matrix operation power with "if" condition?? I want to apply "if" conditionto all value of the matrix how agree the condition with out creating a for loop or multi "if" condition
Ex: here an simple exemple I don't want to put it inside "for" loop
x = [1,2] y = [100,35]
if x>1 x = 0; else x = x .* y^2; end
In my original code "x" and "y" are huge and I try to optimize the speed
Thank you!!

 Akzeptierte Antwort

Roger Stafford
Roger Stafford am 28 Nov. 2013

1 Stimme

That won't work with 'if'. It won't come true unless all the elements are negative. Use logical indexing.
t = x>1;
x(t) = x(t).*y(t).^2;

3 Kommentare

Jos (10584)
Jos (10584) am 28 Nov. 2013
Bearbeitet: Jos (10584) am 28 Nov. 2013
Indeed, use logical indexing! However, Roger's answer should have been:
t = x>1;
x(t) = 0 ;
x(~t) = x(~t).*y(~t).^2;
Jonathan Roy
Jonathan Roy am 28 Nov. 2013
It's always a pleasure to see answers popping so fast! It work so fine!!
Thank you for your help!!
Roger Stafford
Roger Stafford am 28 Nov. 2013
Thanks, Jos. I guess I'm not fully awake yet.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by