if statement for range of array values
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Is there a better way to write this 'if' statement?
for i = 1:size(somevalue)
if (x(i) < xmax && x(i-1) < xmax && x(i-2) < xmax) || (y(i) < ymax && y(i-1) < ymax)
disp('do something');
end
Thanks for your help!
1 Kommentar
Oleg Komarov
am 9 Mai 2012
Trivial question, do you want the condition to be verified on any (&&) of the 3 consecutive values or on all (&)?
Antworten (3)
Wayne King
am 9 Mai 2012
How about
if (any(x<xmax) || any(y<ymax))
disp('do something');
end
or do you really want to test if every one is? Of course it seems that x<xmax or y<ymax are to be always true.
4 Kommentare
Jan
am 9 Mai 2012
@Sean: This needs to create a temporary array of the length numel(x)+numel(y). Therefore I assume this is slower than Wayne's approach.
Dr. Seis
am 9 Mai 2012
I think what you might be after is something like:
if all(x(i-1:i+1) < xmax) || all(y(i-1:i+1) < ymax)
% something
end
2 Kommentare
Dr. Seis
am 9 Mai 2012
Misinterpreted your "if" statement on my previous attempt. This should be what you are after.
Note: "all" will return TRUE if and only if the entire array returned from "x<xmax" is all 1's. "any" will return TRUE if there is one or more 1 in the array returned by "x<xmax".
Richard Brown
am 9 Mai 2012
If doing it this way, the x indices should be i-2:i, and the y indices should be i-1:i, and the loop should start at 3
Richard Brown
am 9 Mai 2012
To check I've understood correctly, you only want to do something if the current and two preceding x values are all less than xmax, or, the current and preceding y values are both less than ymax. Then, the indices you are interested in are given by:
idx = find(filter([1 1 1], 1, x < xmax) == 3 | filter([1 1], 1, y < ymax) == 2)
Note that 1 and 2 will never appear in idx as your expression cannot be evaluated for these
0 Kommentare
Siehe auch
Kategorien
Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!