伊莉討論區
標題:
[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!