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
请问这段代码作用是什么?输入和输出的para1和para2是什么意思?怎么调用输入接口得到输出?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- joel_1993 2021-08-27 21:22关注
大概是这个意思
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
基本都给你注释了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器