首先是MATLAB代码。在代码下面,我将讨论它的问题,我需要一种替代方法。
if((a>b) && (c>d) && (e==f) || (g<h) || (i==j))
msgbox('This is 1st','Recognize');
elseif((a>b) && (c>d) && (e==f) || (g>h) || (i~=j))
msgbox('This is 2nd','Recognize');
elseif( (e==f) || (g<h) || (i==j))
msgbox('This is 3rd','Recognize');
elseif((a>b) && (c>d) && (e==f))
msgbox('This is 4th ','Recognize');
.
.
.
elseif((a>b) && (c>d))
msgbox('This is 32nd','Recognize');
else
msgbox('Condition not meet','Recognize');
我面临的问题:
1。有32种不同的if else if
。根据规则,当一个if
或elseif
变为真时,其余的将被跳过。
2. 如果我只使用if
(不是else
),则会单独检查所有内容,但处理时间过长。并且可能同时存在多个条件。
3。 Switch
也可以作为if else if
(如果情况属实,则忽略其余部分)。
所需的解决方案是:应检查所有32个条件,并执行最佳。
答案 0 :(得分:0)
您可以执行类似
的操作action = 1^a + 2^b + 2^c + ...
然后使用数字action
表示Switch
或访问单元格或数组中的值(包含字符串)。