1、clear;close all;clc;%载入源数据 %其实这里可以载入 execl 表格的n=15; %参与评价的人数m=4; %参与评价的指标个数X_0=zeros(n,m); % 数据矩阵X_2=zeros(n,m); %偏差结果的求取矩阵X_3=zeros(n,m); % 相关系数计算矩阵a1_0=13 18 17 18 17 17 18 17 13 17 18 13 18 13 18;a2_0=18 18 17 17 18 13 17 13 18 13 17 13 13 17 17;a3_0=48.67 43.33 43.56 41.89 39.47 43.44 37.97 41.1
2、4 39.67 39.83 34.11 40.58 34.19 30.75 21.22;a4_0=10 10.7 3 5.4 5.4 0.7 4.2 0.5 9.3 0.85 2.9 5.45 4.2 2.7 6; %指标数X_1=a1_0,a2_0,a3_0,a4_0; %最后使用到的数据矩阵%1 寻找参考列x0=max(a1_0),max(a2_0),max(a3_0),max(a4_0); %取每列的最大值(指标的最大值)%2 计算偏差结果i=1;while(i=m+1) %为什么这个地方会出问题呢for j=1:1:nX_2(j,i)=abs(X_1(j,i)-x0(i);end;i=
3、i+1;end%3 确定偏差的最值error_min=min(min(X_2);error_max=max(max(X_2);%4 计算相关系数i=1;p=0.5;while(i=m+1)for j=1:1:nX_3(j,i)=(error_min+p*error_max)/(X_2(j,i)+p*error_max);end;i=i+1;end%X_3 %可以在此观察关联矩阵%5 计算各个学生的关连序a=zeros(1,n);for j=1:1:nfor i=1:1:ma(j)=a(j)+X_3(j,i); %其实可以直接用 sumend;a(j)=a(j)/m; %可以改进%end%a %在此可以观测各个学生的序%改进:如果各个指标的所占权重不一样的话, 可以添加相应的权系数%6 排序b=a;c,s=sort(b);for i=1:1:nd(i)=i;endd=d;result=d b c s%7 将结果显示出来figure(1);plot(a);figure(2)bar(a);