1、function f=grayrelated(X,Y)
%這裡X是標準化後的參考序列,Y是評價矩陣
Y=[
71.8 90.1 0.57 0.45 0
51 40.2 0.38 0.55 10.5
52 25 0.22 0.52 12
68 90 0.38 0.38 21
28 40 0.32 0.3 18.5
51 45 0.15 0.3 5
76 95 0.7 0.55 12
87 95 0.7 0.5 9.8
76 90 0.57 0.5 11
50 35 0.32 0.35 20
68 90 0.57 0.35 18.5
82 95 0.7 0.35 0
100 200 1 1 0
97.5 180 0.94 0.95 1.3
95 160 0.88 0.9 2.5
86.3 105 0.68 0.75 6.3
82.5 90 0.6 0.7 7.5
78.8 75 0.53 0.65 8.8
75 60 0.45 0.7 7.5
68.8 52.5 0.41 0.55 13.8
62.5 45 0.38 0.5 17.5
56.3 37.5 0.34 0.45 21.3
43.8 26.3 0.28 0.35 50.6
50 30 0.3 0.4 25
37.5 22.5 0.25 0.3 75
31.3 18.8 0.23 0.25 100
18.8 11.3 0.15 0.15 168.8
25 15 0.2 0.2 125
12.5 7.5 0.1 0.1 212.5
6.3 0.8 0.05 0.05 256.3
2、];%輸入評價矩陣Y
X=[1 1 1 1 1];%X為參考序列,均為1,個數就是指標個數,情形不同要修改個數
Len=size(Y,2);%取Y矩陣的列數,也就是指標的個數
Wen=size(Y,1);%取行數,就是目標個數
%for i=1:Len
%Y(:,i)=(Y(:,i)-mean(Y(:,i)))/sqrt(var(Y(:,i))); %將Y矩陣用統計方法標準化標準化,
%end
for i=1:Len-1
S(:,i)=(Y(:,i)-min(Y(:,i)))./(max(Y(:,i))-min(Y(:,i)));%將Y矩陣標準化,適用於越大越好型,把該型指標放在一起,前n-1個,不同情形要修改
D=(max(Y(:,5))-Y(:,5))./(max(Y(:,5))-min(Y(:,5))); %將Y矩陣標準化,適用於越小越好型,把該型指標放在一起,第n個,不同情形要修改
end
SD=[S,D];%把兩種不同型別的指標組合在一起
temp=SD;% 給temp變數分配空間,其實可以不分配,只是先分配編譯的速度更快
for i=1:Wen
temp(i,:)=abs(SD(i,:)-X);%計算評價矩陣與參考序列的差的絕對值
p=0.5;%分辨係數
related=Y;%給關聯絡數related變數分配空間
Min=min(min(temp));
Max=max(max(temp));
related(i,:)=(Min+p*Max)./(temp(i,:)+p*Max);
f=size(1,Wen);%給關聯度分配空間
f(i)=mean(related(i,:));
%w=[1/Len 1/Len 1/Len 1/Len 1/Len] %若已知各指標權重,可在此修改
%f=w*related"
1、function f=grayrelated(X,Y)
%這裡X是標準化後的參考序列,Y是評價矩陣
Y=[
71.8 90.1 0.57 0.45 0
51 40.2 0.38 0.55 10.5
52 25 0.22 0.52 12
68 90 0.38 0.38 21
28 40 0.32 0.3 18.5
51 45 0.15 0.3 5
76 95 0.7 0.55 12
87 95 0.7 0.5 9.8
76 90 0.57 0.5 11
50 35 0.32 0.35 20
68 90 0.57 0.35 18.5
82 95 0.7 0.35 0
100 200 1 1 0
97.5 180 0.94 0.95 1.3
95 160 0.88 0.9 2.5
86.3 105 0.68 0.75 6.3
82.5 90 0.6 0.7 7.5
78.8 75 0.53 0.65 8.8
75 60 0.45 0.7 7.5
68.8 52.5 0.41 0.55 13.8
62.5 45 0.38 0.5 17.5
56.3 37.5 0.34 0.45 21.3
43.8 26.3 0.28 0.35 50.6
50 30 0.3 0.4 25
37.5 22.5 0.25 0.3 75
31.3 18.8 0.23 0.25 100
18.8 11.3 0.15 0.15 168.8
25 15 0.2 0.2 125
12.5 7.5 0.1 0.1 212.5
6.3 0.8 0.05 0.05 256.3
2、];%輸入評價矩陣Y
X=[1 1 1 1 1];%X為參考序列,均為1,個數就是指標個數,情形不同要修改個數
Len=size(Y,2);%取Y矩陣的列數,也就是指標的個數
Wen=size(Y,1);%取行數,就是目標個數
%for i=1:Len
%Y(:,i)=(Y(:,i)-mean(Y(:,i)))/sqrt(var(Y(:,i))); %將Y矩陣用統計方法標準化標準化,
%end
for i=1:Len-1
S(:,i)=(Y(:,i)-min(Y(:,i)))./(max(Y(:,i))-min(Y(:,i)));%將Y矩陣標準化,適用於越大越好型,把該型指標放在一起,前n-1個,不同情形要修改
D=(max(Y(:,5))-Y(:,5))./(max(Y(:,5))-min(Y(:,5))); %將Y矩陣標準化,適用於越小越好型,把該型指標放在一起,第n個,不同情形要修改
end
SD=[S,D];%把兩種不同型別的指標組合在一起
temp=SD;% 給temp變數分配空間,其實可以不分配,只是先分配編譯的速度更快
for i=1:Wen
temp(i,:)=abs(SD(i,:)-X);%計算評價矩陣與參考序列的差的絕對值
end
p=0.5;%分辨係數
related=Y;%給關聯絡數related變數分配空間
Min=min(min(temp));
Max=max(max(temp));
for i=1:Wen
related(i,:)=(Min+p*Max)./(temp(i,:)+p*Max);
end
f=size(1,Wen);%給關聯度分配空間
for i=1:Wen
f(i)=mean(related(i,:));
end
%w=[1/Len 1/Len 1/Len 1/Len 1/Len] %若已知各指標權重,可在此修改
%f=w*related"