📄 scaledata.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -