?? matlab.txt
字號:
clear;clc;
a=[
48.37611111 26.33277778 819.1455556 334.5933333 1032.364444 262.3716667 2374.722222
15.84 6.430384615 981.3157692 756.1965385 991.7353846 82.82846154 2535.692308
70.7225 29.8525 895.5325 294.5875 1059.1875 462.9525 2724.5
]; %a為評價集標準值
d=[
43.49 28.05 737.98 391.12 1025.66 7.41 2134
2.61 1.82 920.75 636.41 1005.45 74.09 2330
28.66 8.51 774.99 322.78 1013.96 93.84 2001
3.01 1.95 897.53 614.44 889.87 123.27 2200
25.85 5.72 759.59 302.03 1001.96 76.15 1972
2 1.95 1161.68 1003.73 1077.06 110.1 3004
3.81 1.09 820.51 396.61 1004.74 37.04 2019
5.21 2.92 814.08 419.8 1005.8 31.49 2018
4.41 2.8 824.65 449.06 998.36 38.28 2047
3.01 1.58 1220.54 956.14 1244.75 3.91 3071
6.01 2.43 1791.61 2338.17 1278.08 30.87 4362
1.2 2.67 1160.54 821.29 1100.82 85.41 2942
6.61 7.3 865.57 389.31 1065.27 46.51 2244
9.82 3.77 1240.77 939.71 1165.24 177.19 3248
17.64 6.44 884.2 473.49 930.29 218.95 2417
26.65 7.9 839.5 474.71 941.99 184.18 2363
25.25 4.74 808.33 486.31 881.01 191.6 2217
25.45 6.93 852.01 478.37 966.45 182.54 2339
35.27 18.48 785.11 331.32 979.57 4.04 2245
2.81 2.31 1601.02 2533.55 486.73 2.47 3801
4.21 4.86 1815.52 2584.68 963.61 0 4399
15.23 5.35 813.85 787.16 688.79 205.18 2093
67.01 36.65 864.23 357.76 1035.8 426.31 2609
84.65 34.24 892.72 381.19 1060 466.64 2731
15.43 21.52 898.68 88.47 1061.46 414.48 2483
115.8 27 926.5 350.93 1079.49 544.38 3075
]; %b為待判樣品值
[m,n]=size(a);
[x,y]=size(d);
TheResultMoHu=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for s=1:x
for p=1:n
b(p)=d(s,p);
end
for i=1:n %計算每一個列的平均值
ColAverage(i)=0;
for j=1:m
ColAverage(i)=ColAverage(i)+a(j,i);
end
ColAverage(i)=ColAverage(i)/m;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ETotal = 0; %超標加權法計算權重
for j = 1: n
ETotal = ETotal + (b(j) / ColAverage(j));
end
for i = 1: n
EResult(i) = (b(i) / ColAverage(i)) / ETotal; %EResult為計算結果
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%使用隸屬函數,做預處理對每一列進行排序
SortedMatrix=a;
for j=1:n
for i=1:m
for k=i:m
if SortedMatrix(i,j)>SortedMatrix(k,j)
tmp=SortedMatrix(i,j);
SortedMatrix(i,j)=SortedMatrix(k,j);
SortedMatrix(k,j)=tmp;
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%計算單因素隸屬度
c=SortedMatrix;
for j = 1 : n
for i = 1 : m
for k = 1 : m
if a(i, j) == c(k, j)
if k == 1
if b(j) < c(k, j)
LSDResult(j, i) = 1;
end
if b(j) >= c(k, j) & b(j) < c(k + 1, j)
LSDResult(j, i) = ((c(k + 1, j) - b(j)) / (c(k + 1, j) - c(k, j)));
end
if b(j) >= c(k + 1, j)
LSDResult(j, i) = 0;
end
end
if k > 1 & k < m
if b(j) < c(k - 1, j)
LSDResult(j, i) = 0;
end
if b(j) >= c(k - 1, j) & b(j) < c(k, j)
LSDResult(j, i) = ((b(j) - c(k - 1, j)) / (c(k, j) - c(k - 1, j)));
end
if b(j) >= c(k, j) & b(j) < c(k + 1, j)
LSDResult(j, i) = ((c(k + 1, j) - b(j)) / (c(k + 1, j) - c(k, j)));
end
if b(j) >= c(k + 1, j)
LSDResult(j, i) = 0;
end
end
if k == m
if b(j) < c(k - 1, j)
LSDResult(j, i) = 0;
end
if b(j) >= c(k - 1, j) & b(j) < c(k, j)
LSDResult(j, i) = ((b(j) - c(k - 1, j)) / (c(k, j) - c(k - 1, j)));
end
if b(j) >= c(k, j)
LSDResult(j, i) = 1;
end
end
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%權重乘以單因素隸屬度得到最終結果
R=LSDResult;
E=EResult;
FuzzyEvalution=E*R;
TheResultMoHu=[TheResultMoHu;FuzzyEvalution];
end
TheResultMoHu
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -