How to make an efficient if-statement-expression that when identifying a 1x3 vector consisting only of either 6's,7's,8's or 9's gives the same statement?

2 views (last 30 days)
I could you run following if statement
vec=[9 9 9]; if vec(1:3)==9 | vec(1:3)==8 | vec(1:3)==7 | vec(1:3)==6 disp('Identified') end Identified
But is there not a more efficient way to accomplish this in stead of writing all these 'or-signs' in the if statement? With vectorized code? I have tried with a for loops, but got problems when writing it under an if statement with more than one evaluation option like elseif

Accepted Answer

Matt J
Matt J on 22 Nov 2012
if ismember(vec,6:9)
  4 Comments
John
John on 22 Nov 2012
I have tried the same code on a case where the if-statement-expression should (again) identify a 1x3 vector but with two identical elements ranging from 1:10. I was forced to split the 1x3 vector into three 1x2 vectors as following
vec=[1 2 2];
if ismember(vec(1:2),(1:10).'*[1 1],'rows') || ismember(vec(2:3),(1:10).'*[1 1],'rows') || ismember(vec(1:2:3),(1:10).'*[1 1],'rows')
display('Identified')
end
Identified
Is there a method to accomplish this in less steps?

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 22 Nov 2012
x = unique(vec);
out = numel(x) == 1 && ismember(x, 6:9);

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!