⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modlgui.m

📁 偏最小二乘算法在MATLAB中的实现
💻 M
📖 第 1 页 / 共 2 页
字号:
   post,[431 161 30 20],'Horiz','Right','String',...
   num2str(get(handl(3,11),'Max')),'Visible','Off');

  handl(2,12) = uicontrol(fig00,'Style','Push',post,[251 11 105 37],...
   'String','Execute','Callback',[s1,'''act212'');']);
  s           = [out,' = modlgui(0,0,',out,',''act312'');'];
  handl(3,12) = uicontrol(fig00,'style','push',post,[366 11 105 37],...
   'String','Quit','Callback',s,'UserData',out);
  handl(4,12) = uicontrol(fig00,'Style','Push',post,[251 11 105 37],...
   'String','Resume','Callback',[s1,'''act412'');'],'Visible','Off');
  set(fig00,'UserData',[handl]);
else
  fig00      = gcf;
  handl      = get(fig00,'Userdata');
  bgc        = 'BackgroundColor';
  bgc1       =  [0.8 0.8 0.8];
  post       = 'Position';
  out        = get(handl(3,12),'UserData');
  if strcmp(action,'act212')
% check flags and cross validation paramters
%  respond with errors or warnings, else do modlmker
    set(handl(2,12),'Visible','Off');
	x        = get(handl(2,2),'Userdata');
   	y        = get(handl(2,3),'Userdata');
   	[mx,nx]  = size(x);
   	[my,ny]  = size(y);
% does the data exist and are the data compatible?
    if (isempty(x)|isempty(y))
	  handl(1,1) = 0;
	  set(handl(2,4),'string','ERROR - input data not found -',...
       bgc,[1 0.2 0.2]);
   	elseif mx~=my
	  set(handl(2,4),'string',['ERROR - X and Y blocks must have the ',...
	   'same number of samples'],bgc,[1 0.2 0.2]);
	else
	  set(handl(2,4),'String','Executing',bgc,[1 1 1]);
      handl(1,1) = figure('Name','Model Results',post,[401 169 390 260],...
       'Resize','On','NumberTitle','Off');
	  set(fig00,'UserData',[handl]);
	  for jj=3:5
	    if get(handl(jj,2),'Value')==0
	      set(handl(jj,2),'Visible','Off')
		end
	    if get(handl(jj,3),'Value')==0
	      set(handl(jj,3),'Visible','Off')
		end
	  end
	  for jj=8:9
	    if get(handl(jj,5),'Value')==0
	      set(handl(jj,5),'Visible','Off')
		end
	  end
	  for jj=3:6
	    if get(handl(jj,5),'Value')==0
	      set(handl(jj,5),'Visible','Off')
		end
	  end
	  set(handl([3 5 6],7:11),'Visible','Off')
	  modl       = modlmkeg(x,y,fig00,'crval');
    end
  elseif strcmp(action,'act412')
  	tstm     = get(handl(3,3),'UserData');
	set(handl([3 5 6],6),'Visible','Off')
    if tstm==1;
      set(handl(2,4),bgc,[1 1 1]);
	  set(handl(4,12),'Visible','Off');
	  modl       = modlmkeg(x,y,fig00,'coefs');
    elseif tstm==2;
      set(handl(2,4),bgc,[1 1 1]);
	  set(handl(4,12),'Visible','Off');
	  modl       = modlmkeg(x,y,fig00,'qlims');
    elseif tstm==3;
      set(handl(2,4),bgc,[1 1 1]);
	  set(handl(4,12),'Visible','Off');
	  modl       = modlmkeg(x,y,fig00,'tlims');	
    elseif tstm==4|tstm==5|tstm==6;
      set(handl(2,4),bgc,[1 1 1]);
	  set(handl(4,12),'Visible','Off');
	  modl       = modlmkeg(x,y,fig00,'final');
	end
	
  elseif strcmp(action,'act32')
% no scaling
    set(handl(3,2),'Value',1);
    set(handl(4:5,2),'Value',0);
	handl(1,2)  = 1;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act42')
% mean centered scaling
    set(handl(3:5,2),'Value',0);
    set(handl(4,2),'Value',1);
   	handl(1,2)  = 2;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act52')
% autoscaling
    set(handl(3:4,2),'Value',0);
   	set(handl(5,2),'Value',1);
   	handl(1,2)  = 3;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);

  elseif strcmp(action,'act33')
% partial least squares
    set(handl(3,3),'Value',1);
    set(handl(4:5,3),'Value',0);
	set(handl(2:6,5),'Visible','on');
	set(handl(7:9,5),'Visible','off');
	modlgui(0,0,out,'act35');
   	handl(1,3)  = 2;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act43')
% principle components regression
    set(handl(3:5,3),'Value',0);
    set(handl(4,3),'Value',1);
	set(handl(2:6,5),'Visible','On');
	set(handl(7:9,5),'Visible','Off');
	modlgui(0,0,out,'act35');
	handl(1,3)  = 1;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act53')
% ridge regression
    set(handl(3:4,3),'Value',0);
	set(handl(5,3),'Value',1);
	set(handl(2:6,5),'Visible','Off');
	set(handl(7:9,5),'Visible','On');
   	modlgui(0,0,out,'act85');
	handl(1,3)  = 3;
    set(handl(2,4),'String',' ',bgc,[1 1 1]);

% cross-validation method
  elseif strcmp(action,'act35')
% venetian blinds
    set(handl(3,5),'Value',1);
    set(handl(4:6,5),'Value',0);
	set(handl(2:6,6:7),'Visible','On');
	set(handl(2:6,8:11),'Visible','Off');
	handl(1,5)  = 1;
    set(handl(2,4),'string',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act45')
% leave one out
    set(handl(3:6,5),'value',0);
    set(handl(4,5),'value',1);
	set(handl(2:6,6),'Visible','On');
	set(handl(2:6,7:11),'Visible','Off');
   	handl(1,5)  = 2;
    set(handl(2,4),'string',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act55')
% contiguous block
    set(handl(3:6,5),'value',0);
	set(handl(5,5),'value',1);
	set(handl(2:6,6:7),'Visible','On');
	set(handl(2:6,8:11),'Visible','Off');
   	handl(1,5)  = 3;
    set(handl(2,4),'string',' ',bgc,[1 1 1]);
  elseif strcmp(action,'act65')
% sdep
    set(handl(3:5,5),'value',0);
	set(handl(6,5),'value',1);
	set(handl(2:6,6:8),'Visible','On');
	set(handl(2:6,9:11),'Visible','Off');
   	handl(1,5)  = 4;
    set(handl(2,4),'string',' ',bgc,[1 1 1]);
% RR venetian
  elseif strcmp(action,'act85')
   	set(handl(8,5),'value',1);
   	set(handl(9,5),'value',0);
	set(handl(2:6,6:8),'Visible','Off');
	set(handl(2:6,9:11),'Visible','On');
   	handl(1,5)  = 2;
% Hoerl Kennard
  elseif strcmp(action,'act95')
   	set(handl(8,5),'value',0);
   	set(handl(9,5),'value',1);
	set(handl(2:6,6:8),'Visible','Off');
	set(handl(2:6,9:10),'Visible','On');
	set(handl(2:6,11),'Visible','Off');
   	handl(1,5)  = 1;
% 
  elseif strcmp(action,'act36')
    lvs         = round(get(handl(3,6),'Value'));
    set(handl(4,6),'String',num2str(lvs));
  elseif strcmp(action,'act37')
    split       = round(get(handl(3,7),'Value'));
    set(handl(4,7),'String',num2str(split));
  elseif strcmp(action,'act38')
    cvr       = round(get(handl(3,8),'Value'));
    set(handl(4,8),'String',num2str(cvr));
  elseif strcmp(action,'act39')
    tmax      = round(get(handl(3,9),'Value')*100)/100;
    set(handl(4,9),'String',num2str(tmax));
  elseif strcmp(action,'act310')
    tdiv      = round(get(handl(3,10),'Value'));
    set(handl(4,10),'String',num2str(tdiv));
  elseif strcmp(action,'act311')
    split      = round(get(handl(3,11),'Value'));
    set(handl(4,11),'String',num2str(split));
  end	
  if strcmp(action,'act312')
    close;
  end
end

⌨️ 快捷键说明

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