matlab标准数据,Matlab数据标准化实现

本文介绍了在多属性综合评价中,如何使用MATLAB进行数据标准化处理,包括向量归一化法、线性比例变换法(正向与反向)、极差变换法(标准0-1变换)以及两种最优值为给定数值或区间的标准化方法,旨在消除量纲差异和处理不同类型的指标数据。
摘要由CSDN通过智能技术生成

在多属性综合评价问题中,为了消除量纲差异带来指标不可公度性问题,往往需要对原始评价矩阵进行标准化处理,通过将不同量纲进行变换,变为无量纲的标准化指标。考虑到原始评价矩阵可能同时有多种类型的指标,比如,某个评价问题中可能同时有正向指标(越大越好)、逆向指标(越小越好)和中性指标(最优值为给定区间),故以下程序只针对某个指标值的列向量进行标准化处理;如果要处理整个评价矩阵,则根据指标类型分别对各个指标单独处理,然后再组成成一个标准评价矩阵,如:标准评价矩阵S=[std_1, std_2, …, std_n],其中,std_1,std_2,…,std_n为各指标的标准化数值。

(一)向量归一化法,转换到区间[0,1]

function std_attrValues= vecStd(attrValues)

if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

std_attrValues=[];      %调用错误时返回空值

else

m=length(attrValues);         %列向量长度

std_attrValues=ones(m,1);     %初始化标准化属性值,与属性值一样是个m×1的列向量

sqAttr=attrValues.^2;         %原数据每个值的平方

sqSumByAttr=sum(sqAttr,1);    %列向量的平方和

sqrtByAttr=sqrt(sqSumByAttr); %对平方和开根号

if sqSumByAttr==0

warndlg('指标值全为0,不能采用向量归一化法进行标准化处理,返回空值,请选择其他方法!','失败!');

std_attrValues=[];   %调用错误时返回空值

else

for i=1:m

std_attrValues(i,1)=attrValues(i,1)/sqrtByAttr;  %计算标准化属性值

end

disp('数据标准化处理成功!');

end

end

end

(二)线性比例变换法,分正向型和反向型分别转换到区间[0,1]

function std_attrValues=linearStd(attrValues,attrType)

if nargin<2

warndlg(&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值