scaledata.m

来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 61 行

M
61
字号
function [XtrScaled, ScalePar] = ScaleData(Xtr, ScaleType);

[Nrow, Ncol] = size(Xtr);
ScalePar.MeanVal=0;
ScalePar.StdVal=0;
ScaleType=upper(ScaleType);
if ScaleType == 'UNI'
    for i=1:Nrow
        XtrScaled(i,:)=Xtr(i,:)/norm(Xtr(i,:));
    end
elseif ScaleType == 'RNR'
    MinVal=min(Xtr');
    MaxVal=max(Xtr');
    for i=1:Nrow
        if (MinVal(i) == MaxVal(i))
            disp('One or more rows in matrix contain identical values');
            XtrScaled(i,:) = 1;
        else
            XtrScaled(i,:)=(Xtr(i,:)-MinVal(i))/(MaxVal(i)-MinVal(i));
        end
    end
elseif ScaleType == 'RNC'
    MinVal=min(Xtr);
    MaxVal=max(Xtr);
    ScalePar.MinVal=MinVal;
    ScalePar.MaxVal=MaxVal;
    for i=1:Ncol
        if (MinVal(i) == MaxVal(i))
            disp('One or more columns in matrix contain identical values');
            XtrScaled(:,i) = 1;
        else
            XtrScaled(:,i)=(Xtr(:,i)-MinVal(i))/(MaxVal(i)-MinVal(i));
        end
    end
elseif ScaleType == 'MNC'
    MeanVal=mean(Xtr);
    ScalePar.MeanVal=MeanVal;
    for i=1:Nrow
        XtrScaled(i,:)=Xtr(i,:)-MeanVal;
    end
elseif ScaleType == 'AUT'
    MeanVal=mean(Xtr);
    StdVal=std(Xtr);
    ScalePar.MeanVal=MeanVal;
    ScalePar.StdVal=StdVal;
    for i=1:Nrow
        XtrScaled(i,:)=(Xtr(i,:)-MeanVal)./StdVal;
    end
elseif ScaleType == 'SNV'
    MeanVal=mean(Xtr');
    StdVal=std(Xtr');
    for i=1:Nrow
        XtrScaled(i,:)=(Xtr(i,:)-MeanVal(i))/StdVal(i);
    end
elseif ScaleType == 'LOG'
    XtrScaled = log(Xtr);
elseif ScaleType == 'EXP'
    XtrScaled = exp(Xtr);
else
    XtrScaled = Xtr;
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?