2

私は、あちこちで数値から離散値を作成する必要があるプロジェクトに取り組んでいます。現在、カスケードされたif / elseif / elseコンストラクトを使用しています。例:

    if M > 6
        evidence{2} = 3;
    elseif M > 2
        evidence{2} = 2;
    else
        evidence{2} = 1;
    end

これをより保守しやすい(そして簡潔な)構文に置き換えたいのですが、自分のイディオムを思いつく前に、MATLABで利用できる便利な関数または構文がすでにあるかどうかを知りたいと思います。助言がありますか?

4

2 に答える 2

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

しかし、私の意見では、それは保守しにくいです。あなたの方がいいです。

于 2012-06-02T00:19:39.607 に答える
2

どうですか:

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

基本的に、Mが存在する区間を検索しています:(-inf、2]、(2,6]、(6、+ inf)

したがって、値が1/2/3でなくても、見つかった範囲インデックスを他の値にマップできます...

于 2012-06-02T04:19:53.110 に答える