level 10
本人软件为2013b,想用MATLAB实现熵值法确定权重,有没有大神知道一下,编个程序,谢谢!
2016年01月27日 12点01分
1
level 10
x=[6,2,4,8,10;8,10,6,4,2;2,4,6,8,10;2,6,4,10,8];
[n,m]=size(x);
k=1/log(n);
X=zeros(n,m);
for j=1:m
for i=1:n
c=sort(x(:,j));
big=x(n,j);
small=x(1,j);
X(i,j)=(x(i,j)-small)/(big-small+eps)+1;
end
end
p=[];
for j=1:m
th=0;
for t=(X(:,1))'
th=th+t;
end
Ph=X(:,j)/(th+eps);
p=[p Ph];
end
e=[];
for j=1:m
eg=0;
for i=1:n
eh=-k*p(i,j)*log(p(i,j));
eg=eg+eh;
end
e=[e,eg];
end
E=0;
for j=1:m
E=E+e(j);
end
g=[];
for j=1:m
gh=(1-e(j))/(m-E+eps);
g=[g,gh];
end
Eh=0;
for nh=g
Eh=Eh+nh;
end
w=[];
for j=1:m
wh=g(j)/(Eh+eps);
w=[w,wh];
end
s=[];
for i=1:n
sh=w(i)*p(i,:);
shen=0;
for she=sh
shen=shen+she;
end
end
请问这个程序里的权重是p这个矩阵吗?
2016年01月27日 13点01分
6