Using switch case with multiple variables (instead of just n, with n1, n2, etc.).
147 views (last 30 days)
Show older comments
Arian Kolahi Sohrabi
on 10 Mar 2019
Commented: Steven Lord
on 10 Mar 2019
Hello all,
I'm trying to find a way to run the following code:
x1=4;
x2=4;
y1=4;
y2=4;
switch x1,x2,y1,y2
case x1>0 && y1<0 && ((y2>0) || (y2<0 && x2<0) || (x2>0 && y2<y1))
disp('Subtract from 360')
otherwise
disp('Keep as is')
end
and I get this error:
Error: File: untitled5.m Line: 5 Column: 11
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or
other syntax error. To construct matrices, use brackets instead of parentheses.
I'm not sure if I can use switch case with mutliple variables like that. I'd appreciate it if anyone could lend me hand about this.
0 Comments
Accepted Answer
Cris LaPierre
on 10 Mar 2019
You can only switch on one variable. Try this instead
x1=4;
x2=4;
y1=-4;
y2=4;
switch true
case x1>0 && y1<0 && (y2>0 || y2<0 && x2<0 || x2>0 && y2<y1)
disp('Subtract from 360')
otherwise
disp('Keep as is')
end
2 Comments
Steven Lord
on 10 Mar 2019
Or as an even easier approach:
x1=4;
x2=4;
y1=-4;
y2=4;
if x1>0 && y1<0 && (y2>0 || y2<0 && x2<0 || x2>0 && y2<y1)
disp('Subtract from 360')
else
disp('Keep as is')
end
If you need to add more conditions, add elseif blocks inside the if block, before the else keyword.
Alternately, since this looks like you're using x and y coordinates to generate an angle, the atan2d function may be of use to you.
More Answers (0)
See Also
Categories
Find more on Resizing and Reshaping Matrices 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!