| プログラム / 2009/08/12 (Wed) / 編集 |
間違ってる気はするが、MATLAB関数のproborをScilabで実装してみるメモ
probor(確率的OR)というのはファジィ理論で使うっぽいあれらしい。
(注意;ご利用は計画的に!)
再起的に利用する部分を用意
でもってこう
やっつけにもほどがあるぜww
probor(確率的OR)というのはファジィ理論で使うっぽいあれらしい。
(注意;ご利用は計画的に!)
再起的に利用する部分を用意
function y = probor_s(x,w) // y = probor_s(a,b) // x = [a b], then y = a + b - ab. If x has only one row, then y = x. // [nrows,ncols]=size(x); y=zeros(nrows); for k=1:nrows // For each pattern. y(k)=x(k)+w(k)-x(k)*w(k); end endfunction
でもってこう
function y = probor(x,w) // y = probor(a,b) // x = [a b], then y = a + b - ab. If x has only one row, then y = x. // if argn(2) == 1 [nrows,ncols]=size(x); y=x; if ncols >= 2 y=x(:,1); for k=2:ncols // For each pattern wtemp=x(:,k); y=probor_s(y,wtemp); end else y=x end else y=probor_s(x,w); end endfunction対応しているのは「wなしでxが行列」「wとxが縦ベクトル」のとき、「wなしでxが縦ベクトル」だと足す相手がいないのでそのままxが出てくる、「wありでxが行列」だとエラー処理していないのでどうなるかわからない。。。
やっつけにもほどがあるぜww
ちなみに実行結果、「wなしでxが行列」のとき
-->x=[1 2 3]
x =
1. 2. 3.
-->probor(x)
ans =
1.
-->probor(x')
ans =
1.
2.
3.
-->y=[1 4;2 5;3 6]
y =
1. 4.
2. 5.
3. 6.
-->probor(y)
ans =
1.
- 3.
- 9.
-->y2=[1 4 2;2 5 3;3 6 4]
y2 =
1. 4. 2.
2. 5. 3.
3. 6. 4.
-->probor(y2)
ans =
1.
9.
31.
実行結果その2、「wとx縦ベクトル」のとき
-->w=[4 5 6]
w =
4. 5. 6.
-->[x',w']
ans =
1. 4.
2. 5.
3. 6.
-->probor(x',w')
ans =
1.
- 3.
- 9.
既知のバグ「wがあってxが行列のとき」
-->probor(y2,w')
ans =
1.
- 3.
- 9.
PR
トラックバック
URL :
コメント
