数学建模.熵权法代码

[n,m] = size(Z);
D = zeros(1,m);
Z=Z./repmat(sum(Z),n,1)
for i=1:m
    e = -sum(Z(:,i) .* mylog(Z(:,i)))/ log(n)
    D(i)=1-e;
end
 W = D ./ sum(D);

其中Z是Topsis法生成的标准化之后的矩阵

由于ln0!=0,所以这里我们要写一个当数据为0时ln值=0的函数

% 重新定义一个mylog函数,当输入的p中元素为0时,返回0
function [lnp] =  mylog(p)
n = length(p);   % 向量的长度
lnp = zeros(n,1);   % 初始化最后的结果
    for i = 1:n   % 开始循环
        if p(i) == 0   % 如果第i个元素为0
            lnp(i) = 0;  % 那么返回的第i个结果也为0
        else
            lnp(i) = log(p(i));  
        end
    end
end

为了帮助大家回顾理论知识,这里将上一讲的理论部分呈现给大家

本篇文章是学习清风老师网课后的总结,希望对大家有所帮助

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值