在MATLAB中,这个级联的if / elseif / else构造是否有一个简洁的替代方案?

时间:2012-06-02 00:15:42

标签: 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中是否已经有一个方便的函数或语法。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

evidence{2} = 1 + (M > 2) + (M > 6);

但在我看来,它的可维护性较差。你的更好。

答案 1 :(得分:2)

怎么样:

evidence{2} = sum( M > [-inf 2 6] )

基本上,你正在寻找M所在的区间:( -inf,2],(2,6),(6,+ inf)

因此,即使您的值不是1/2/3,您也可以将找到的范围索引映射到其他值......