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



我正在从事一个项目,该项目需要从各地的数字量中制作离散值。目前,我正在使用级联的if/elseif/else结构,例如:

    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,您也可以将找到的范围索引映射到其他一些值......

最新更新