%輸入
x=[
3.69 3.71 3.65 3.87
3.71 4.07 3.87 4.42
4.30 3.75 3.63 4.43
4.08 3.78 3.65 4.49
3.93 3.87 4.37 4.47
4.18 3.96 3.72 4.46
];
% 函數(shù)shang.m, 實(shí)現(xiàn)用熵值法求各指標(biāo)(列)的權(quán)重及各數(shù)據(jù)行的得分
% x為原始數(shù)據(jù)矩陣, 一行代表一個(gè)組, 每列對(duì)應(yīng)一個(gè)成分指標(biāo)
% s返回各行得分, w返回各列權(quán)重
[n,m]=size(x); % n=響應(yīng)面/實(shí)驗(yàn)組數(shù), m=成分指標(biāo)
%% 數(shù)據(jù)的歸一化處理
[X,ps]=mapminmax(x',0,1);
ps.ymin=0.002; % 歸一化后的最小值
ps.ymax=0.996; % 歸一化后的最大值
ps.yrange=ps.ymax-ps.ymin; % 歸一化后的極差,若不調(diào)整該值, 則逆運(yùn)算會(huì)出錯(cuò)
X=mapminmax(x',ps);
% mapminmax('reverse',xx,ps); % 反歸一化, 回到原數(shù)據(jù)
X=X';? % X為歸一化后的數(shù)據(jù)
%% 計(jì)算第j個(gè)指標(biāo)下识虚,第i個(gè)記錄占該指標(biāo)的比重p(i,j)
for i=1:n
? ? for j=1:m
? ? ? ? p(i,j)=X(i,j)/sum(X(:,j));
? ? end
end
%% 計(jì)算第j個(gè)指標(biāo)的熵值e(j)
k=1/log(n);
for j=1:m
? ? e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e;? % 計(jì)算信息熵冗余度
w=d./sum(d)? ? % 求權(quán)值w
y(:,1)=x(:,1)*w(1)+x(:,2)*w(2);%輸出
y