伊莉討論區

標題: [Matlab] 新手寫的Fuzzy AHP [打印本頁]

作者: lab405    時間: 2016-9-6 10:32 PM     標題: [Matlab] 新手寫的Fuzzy AHP

各位大大
小弟剛剛自學Matlab,並且要應用於統計上面
主要是用模糊層級分析法
但是在執行時有一行一直沒過,想請教各位大大幫忙解惑
以下是我寫的程式

A=[1 6 3; 0.167 1 0.333; 0.333 3 1];   %在這裡輸入對稱矩陣,此矩陣中的數值是我其中一個數據
[m n]=size(A);
for i=1:m;
    for j=i+1:m;
        A(j,i)=1/A(i,j)
    end
end
FA=[];                  %從這開始把矩陣A模糊化成矩陣FA
for i=1:m
    for j=1:n
        x=A(i,j);
        if x=1          %將矩陣A中的值轉成三角模糊數
            FA(i,j)=[1,1,2]; %%從這行開始出錯,Matlab顯示 Error in fuzzyAHP (line 13) FA(i,j)=[1,1,2];
        elseif x>1 & x<9    %%我知道這個模糊化的過程有瑕疵,因為這沒辦法用在對稱矩陣中
            FA[i,j]=[x-1,x,x+1];  %%但我目前只能用網路上的資料來自學,人在國外暫時沒辦法買書
        elseif x=9
            FA[i,j]=[8,9,9];
        end
    end
end
FAT1=FA(1,1)*FA(1,2)*FA(1,3);
FAT2=FA(2,1)*FA(2,2)*FA(2,3);
FAT3=FA(3,1)*FA(3,2)*FA(3,3);
Z1=[FAT1]^(1/n);                %geometric mean
Z2=[FAT2]^(1/n);
Z3=[FAT3]^(1/n);
W1=Z1/(Z1+Z2+Z3);               %fuzzy weight
W2=Z2/(Z1+Z2+Z3);
W3=Z3/(Z1+Z2+Z3);
WC1=(((W1(1,3)-W1(1,1))+(W1(1,2)-W1(1,1)))/3)+W1(1,1); %Defuzzy to crisp weights
WC2=(((W1(2,3)-W1(2,1))+(W1(2,2)-W1(2,1)))/3)+W1(2,1);
WC3=(((W1(3,3)-W1(3,1))+(W1(3,2)-W1(3,1)))/3)+W1(3,1);
SW1=W1/(W1+W2+W3);              %Standardise the crisp weights
SW2=W2/(W1+W2+W3);
SW3=W3/(W1+W2+W3);
disp('SW1=');disp SW1;
disp('SW2=');disp SW2;
disp('SW3=');disp SW3;
end


顯示的結果只是A矩陣
不好意思,麻煩大家幫我看一下是哪出錯了,並且要如何修改
非常感謝




歡迎光臨 伊莉討論區 (http://www.web01.eyny.com/) Powered by Discuz!