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

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

你可能感兴趣的:(matlab标准数据)