0

ファジー セットmatlabのサポートを検出する関数を作成しようとしています。

まず、support(x)それが何を意味するかを知るために、次のようになります: メンバーシップ度 > 0 の要素を含むクリスプ セット

メンバーシップ関数の例はこちらです。

たとえば、次のコマンドを matlab で実行するとします (trapmf がファジー ロジック ツールボックスの一部であることに注意してください)。

>> x=1:5

x =

     1     2     3     4     5

>> y=trapmf(x,[1 3 4 5]);
>> y

y =

         0    0.5000    1.0000    1.0000         0

したがって、これらはゼロ以外のメンバーシップ値を持つ要素であるため、次のsupport(x)ようになります。2,3,4

このアイデアを得たので、次のように matlab 関数 (.m ファイル) として実行しようとしました。

function support(x)
   y = trapmf(x,[1 3 4 5]);
for i=1:length(y)
    if(y(i) == 0)
        x(i)
    end   
end

しかし、実行すると、次のようになります。

>> support(x)

ans =

     1


ans =

     5

何故ですか?コードの何を修正すればよいですか?

ありがとう。

4

1 に答える 1

1

あなたのコードが何をしているのかわかりませんが、これを使用するのはどうですか:

function s = support(x)
   y = trapmf(x,[1 3 4 5]);
   s = x(y~=0)
于 2013-02-04T15:45:26.273 に答える