请问这段代码作用是什么?输入和输出的para1和para2是什么意思?怎么调用输入接口得到输出?
问题描述:
function [X,para1,para2]=pretreat(X,method,para1,para2)
% data pretreatment
if nargin==2
[Mx,Nx]=size(X);
if strcmp(method,'autoscaling')
para1=mean(X);para2=std(X);
elseif strcmp(method,'center')
para1=mean(X);para2=ones(1,Nx);
elseif strcmp(method,'minmax')
para1=min(X);maxv=max(X);para2=maxv-para1;
elseif strcmp(method,'pareto');
para1=mean(X);para2=sqrt(std(X));
elseif strcmp(method,'none');
para1=zeros(1,Nx);para2=ones(1,Nx);
else
display('Wrong data pretreat method!');
end
for i=1:Nx
X(:,i)=(X(:,i)-para1(i))/para2(i);
end
elseif nargin==4
[Mx,Nx]=size(X);
for i=1:Nx
X(:,i)=(X(:,i)-para1(i))/para2(i);
end
end
答
大概是这个意思
function [X,para1,para2]=pretreat(X,method,para1,para2)
% data pretreatment 数据预处理
if nargin==2 % 假如输入参数只有两个即 X和method
[Mx,Nx]=size(X); % 把X矩阵大小求出来
if strcmp(method,'autoscaling') % 如果处理方法是'autoscaling',自动标准化
para1=mean(X);para2=std(X); % 求出X的均值para1和标准差para2
elseif strcmp(method,'center') % 如果是中心标准化
para1=mean(X);para2=ones(1,Nx); % 那么求出X的均值para1和1×Nx的大小的1值para2
elseif strcmp(method,'minmax') % 如果是minmax标准化方法
para1=min(X);maxv=max(X);para2=maxv-para1; % 求出最小值para1最大值maxv和极差para2
elseif strcmp(method,'pareto'); % 如果是pareto标准化方法
para1=mean(X);para2=sqrt(std(X)); % 求出均值para1和标准差的开方para2
elseif strcmp(method,'none'); % 如果method设为‘none’,则按照【0,1】标准化方法
para1=zeros(1,Nx);para2=ones(1,Nx);
else
disp('Wrong data pretreat method!'); % 否则输入错误
end
for i=1:Nx
X(:,i)=(X(:,i)-para1(i))/para2(i); % 标准化后的X数据
end
elseif nargin==4
[Mx,Nx]=size(X);% 如果是输入参数数目等于4个,那么按照输入的para1,para2参数进行标准化处理
for i=1:Nx
X(:,i)=(X(:,i)-para1(i))/para2(i);% 标准化后的X数据
end
end
基本都给你注释了