在MATLAB中,是否有一种简洁的替代方法来替代这种级联if/elseif/else结构?
我在一个项目上工作,这个项目需要在所有地方用数字量制作离散值。目前我使用的是级联if/elseif/else结构,例如:在MATLAB中,是否有一种简洁的替代方法来替代这种级联if/elseif/else结构?,matlab,syntax,if-statement,Matlab,Syntax,If Statement,我在一个项目上工作,这个项目需要在所有地方用数字量制作离散值。目前我使用的是级联if/elseif/else结构,例如: if M > 6 evidence{2} = 3; elseif M > 2 evidence{2} = 2; else evidence{2} = 1; end 我想用一种更易于维护(更简洁)的语法来代替它,但在我提出自己的习惯用法之前,我想知道MATLAB中是否已经有了一种方便的
if M > 6
evidence{2} = 3;
elseif M > 2
evidence{2} = 2;
else
evidence{2} = 1;
end
我想用一种更易于维护(更简洁)的语法来代替它,但在我提出自己的习惯用法之前,我想知道MATLAB中是否已经有了一种方便的函数或语法。有什么建议吗
evidence{2} = 1 + (M > 2) + (M > 6);
但在我看来,它的可维护性较差。你的更好。怎么样:
evidence{2} = sum( M > [-inf 2 6] )
基本上,您正在搜索M所在的区间:(-inf,2),(2,6),(6,+inf)
因此,即使您的值不是1/2/3,您也可以将找到的范围索引映射到其他一些值…这取决于条件的形式。
if
语句有什么问题?它是可读的和可维护的。if
语句在您的函数包含分数时会变得笨拙。而且它们也是当您想要尝试更改类别的数量时,您不是很方便。您是否考虑过switch
语句?您需要在逻辑量周围加括号:1+(M>2)+(M>6)
来指定优先级。