S0=0.6745*S2; S0 p=p/leng
error=100.*(x0-xEstimate)./x0
附件4:灰色关联度程序
function f=grayrelated(X,Y)
%这里X是标准化后的参考序列,Y是评价矩阵
Y=[19.46 44.19 30.98 45.86 55.47 60.34 271.9 94.93 38.28 9.37 8.29 25.81 38.22 25.21 18.57 33.43 36.68 14.14
71.34 33.14 7.74 2.55 25.21 4.64 11.14 4.32 4.04];%输入评价矩阵Y
X=[100.23 85.62 64.53 86.63 105.89 83.55 316.47 135.93 56.56];%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'
23