matlab 计算变异系数,变异系数法求权重matlab 代码

利用matlab编程,很容易根据变异系数法,求得多指标综合评价模型的权重。 代码如果有不懂的地方,可以联系我。

变异系数法求权重matlab 代码

clear;clc;

[data1,header1]=xlsread('statistic1.xlsx','ECO'); %必须将statistic.xlsx至于默认文件下,或者给出完整路径

[data2,header2]=xlsread('statistic2.xlsx','ECO'); % data1 为10个city数据,data2位20个city数据

size1=size(data1);m1=size1(1,1);d1=data1;d2=data2;

size2=size(data2);m2=size2(1,1);

judge=[4 6 12 13 16 17 18]; % 需要极大化处理的指标位置

for j=1:length(judge) % 将极小型数据指标极大化,便于计算得分 d2(:,judge(1,j))=1./d2(:,judge(1,j));

d1(:,judge(1,j))=1./d1(:,judge(1,j));

end

sum2=sum(d2);sum1=sum(d1);

data22=[];data11=[];

for i=1:m2 % 数据归一化处理

data22=[data22;d2(i,:)./sum2];

end

for i=1:m1

data11=[data11;d1(i,:)./sum1];

end

R=data22;

deta=std(R)./mean(R); % 计算变异系数

w=deta/sum(deta);

%score=data1*w'; % 综合得分

score=data11*w';

output=[mean(R);deta;w];

score1=5+(score-min(score)+std(score)/length(score))./(max(score)-min(score)+mean(score)/length(score))*95;

% 功效系数法,使得得分在[5,100]

[ScoreFinal,index]=sort(score1,'descend'); %降序排列

sort=[ScoreFinal,index]; % 得分与排名

xlswrite('statistic1.xlsx',output,'变异系数'); %输出均值mean,标准差std,权重w 到statistic1.xlsx

xlswrite('statistic1.xlsx',sort,'变异sortDescend'); %输出得分与排名 statistic1.xlsx

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值