代码转换的替代方案和其他如果否则在Matlab中

时间:2014-08-17 16:11:01

标签: matlab if-statement switch-statement

首先是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。根据规则,当一个ifelseif变为真时,其余的将被跳过。

2. 如果我只使用if(不是else),则会单独检查所有内容,但处理时间过长。并且可能同时存在多个条件。

3。 Switch也可以作为if else if(如果情况属实,则忽略其余部分)。

所需的解决方案是:应检查所有32个条件,并执行最佳。

1 个答案:

答案 0 :(得分:0)

您可以执行类似

的操作
action = 1^a + 2^b + 2^c + ...

然后使用数字action表示Switch或访问单元格或数组中的值(包含字符串)。