熵权法用matlab怎么,熵权法求权重原理详细步骤附matlab代码

本文通过Matlab代码详细演示了熵权法求权重和数据得分的过程,包括数据的正向化和归一化处理,以及熵值计算、信息冗余度和权重的获取。同时提供了针对不同类型的指标正向化的自定义函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clc;clear;

% 实现用熵值法求各指标(列)的权重及各数据行的得分

% x为原始数据矩阵, 一行代表一个样本, 每列对应一个指标

% s返回各行得分, w返回各列权重

load('data_water_quality.mat')%载入数据

x=X; %X为工作表中的样本数据

%% 数据的正向化处理

[n,m]=size(x); % X中有n个样本, m个指标

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如第2、3、6三列需要处理,那么你需要输入[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如:第2列是极小型,第3列是区间型,第6列是中间型,就输入[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2) %这里需要对这些列分别处理,因此我们需要知道一共要处理的次数,即循环的次数

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% Positivization是我们自己定义的函数,其作用是进行正向化,其一共接收三个参数

% 第一个参数是要正向化处理的那一列向量 B(:,Position(i)) X(:,n)表示取第n列的全部元素

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值