rescaledata.m

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

M
51
字号
function [XtrScaled] = ReScaleData(Xtr, ScaleType, ScalePar);

[Nrow, Ncol] = size(Xtr);
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=ScalePar.MinVal;
    MaxVal=ScalePar.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'
    for i=1:Nrow
        XtrScaled(i,:)=Xtr(i,:)-ScalePar.MeanVal;
    end
elseif ScaleType == 'AUT'
    for i=1:Nrow
        XtrScaled(i,:)=(Xtr(i,:)-ScalePar.MeanVal)./ScalePar.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 + -
显示快捷键?