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

📄 lindemo.m

📁 这里实现了基于四种SVM工具箱的分类与回归算法: 1、工具箱:LS_SVMlab Classification_LS_SVMlab.m - 多类分类 Regression_LS_SVMlab
💻 M
📖 第 1 页 / 共 2 页
字号:
         errordlg('This file does not contain required data.','Bad file','modal');
      end
   end


case 'redraw'
   % == Redraw points in axes ==================================   h=get(hfigure,'UserData');           % uicontrol handlers

   % get point sets
   sets=get(h.axes1,'UserData');
   if isempty(sets)==1,
      return;
   end

   % clears axes
   set(get(h.axes1,'Children'),'EraseMode','normal');
   clrchild(h.axes1);

   h.line.handler=line('EraseMode','xor','Color','k','Visible','off','Parent',h.axes1);
   set(hfigure,'UserData',h);                   % uicontrol handlers

%%%   pplot(sets.X,sets.I);
   ppoints(sets.X,sets.I);
   lindemo('drawline',hfigure,h.line.theta,h.line.alpha);

   drawnow;


case 'loadsets'
   % == Load data sets ========================================   % Get file name from the pop up menu according to menu pointer.    % Than clear axes,load new file and appear the points from the file.   h=get(hfigure,'UserData');   % Clear axes   clrchild(h.axes1);   set(h.axes1, ...      'Box','on', ...      'DrawMode','fast' );   xlabel('feature x');   ylabel('feature y');   % No line   h.line.handler=-1;   set(hfigure,'UserData',h);   % Get file name with sets   file=get(h.btload,'UserData');   % Load sets   sets=load(file.pathname);   % store loaded sets   set(h.axes1,'UserData',sets);   % set axes according to current point set   win=cmpwin(min(sets.X'),max(sets.X'),BORDER,BORDER);   setaxis(h.axes1,win);   axes(h.axes1);   % plots points   ppoints(sets.X,sets.I);   drawnow;      case 'play'   % == Start up the adaptation process ============================   % Get handle to data.   h=get(hfigure,'UserData');                  if h.line.handler==-1,      return;   end   % Check if data are loaded.   sets=get(h.axes1,'UserData');   if isempty(sets)==1,      return;   end   % Disable and enable buttons.   set([h.btinfo h.btstep h.btclose h.btplay h.btreset h.btload h.btcreat ...       h.pualgo h.editer],'Enable','off');   set(h.btstop,'Enable','on');   set(h.btstop,'UserData',0);   h.stop = 0;   set(hfigure,'UserData',h);      % Play - adaptation process   while h.stop==0 & get(h.btstop,'UserData')==0,      lindemo('step',hfigure);      h=get(hfigure,'UserData');                     end   % Enable and dissable buttons.   set([h.btinfo h.btstep h.btclose h.btplay h.btreset h.pualgo ...      h.editer h.btload h.btcreat],'Enable','on');   set(h.btstop,'Enable','off');case 'step'   % == Perform one adaptation step ======================================   h=get(hfigure,'UserData');        % get handlers we will need...   if h.line.handler==-1,      return;   end   % get sets   sets=get(h.axes1,'UserData');   % no data set loaded   if isempty(sets)==1,      return;   end   [alpha,theta,solution,t]=exec(hfigure);   if mod(h.stepcnt,2)==1 & h.line.t >0,      if solution ~= 1,        lindemo('drawline',hfigure,theta,alpha);     else        text=makeinfo(t,alpha,theta,solution);        set(h.console,'String',text );     end    else      if get(h.xbanim,'Value')==0,        lindemo('drawline',hfigure,theta,alpha);      else        lindemo('animline',hfigure,theta,alpha);      end         if solution==1 | solution==-1,        h.stop=1;      end      h.line.alpha = alpha;      h.line.theta = theta;      h.line.t = t;         if solution==0 | solution ==1,         % appear time and line parameters         text=makeinfo(t,alpha,theta,solution);      elseif solution==-1,        text=sprintf('Solution does not exist.\n');      end       set(h.console,'String',text );   end   %  store new solution   h.stepcnt=h.stepcnt+1;   set(hfigure,'UserData',h);case 'animline'   % == Smooth transition of line from old to new position ===============   h=get(hfigure,'UserData');                     % get handlers   % old position of line is...   alpha2=h.line.alpha;   theta2=h.line.theta;   t2=h.line.t;   % New position get from input arguments   theta1=varargin{1};   alpha1=varargin{2};   if t2~=0,      % move line    step=1/ANIM_STEPS;       for k=0:step:1,       alpha=(1-k)*alpha2+k*alpha1;      % smooth transition of alpha        theta=(1-k)*theta2+k*theta1;      % --//--                      theta
          lindemo('drawline',hfigure,theta,alpha);
      end
   else
      % it is first step
      lindemo('drawline',hfigure,theta1,alpha1); % first step
   end % if t2~=0


case 'reset'   % == Reset adaptation process, set up zero step ================   h=get(hfigure,'UserData');                     % get handlers   % get data set   sets=get(h.axes1,'UserData');   % get file   file=get(h.btload,'UserData');   % zeroize parameters of the separation line   h.line.t=0;   h.line.theta=0;   h.line.alpha=[0;0];      h.stepcnt=0;   if h.line.handler==-1,      % create line      axes(h.axes1);            h.line.handler=...        line('EraseMode','xor','Color','k','Visible','off','Parent',h.axes1);      h.badpoint.handler=line('EraseMode','xor','Color','k','Visible','off',...       'Parent',h.axes1,...       'Marker','o',...       'MarkerSize',10);                  drawnow;   else      % change parameters of line      set(h.line.handler,'Visible','off');      set(h.badpoint.handler,'Visible','off');   end % if hline==-1   % set up handlers and flush queue with graph. objects   set(hfigure,'UserData',h);   % create comment   if isempty(sets)==0,      consoletext=sprintf('Step t=0\nNo separation line');      titletext=sprintf('File: %s, # of points K = %d',file.name,sum(sets.K));   else      consoletext=sprintf('No data loaded.\nPress Load data button.\n');      titletext='';      pos=get(h.axes1,'Position');      fsize=min(pos(3),pos(4))/10;      setaxis(h.axes1,[-1 1 -1 1]);      axis([-1 1 -1 1]);            builtin('text',0,0,'Press ''Load data'' button.',...         'HorizontalAlignment','center',...         'FontUnits','normalized',...         'Clipping','on',...         'FontSize',fsize);   end   % show comment   set(h.console,'String',consoletext );   % print title   pos=get(h.axes1,'Position');   fsize=(1-pos(2)-pos(4))*1;   title(titletext,...      'Parent',h.axes1,...      'VerticalAlignment','bottom',...      'HorizontalAlignment','left',...      'FontUnits','normalized',...      'Units','normalized',...      'Position',[0 1 0],...      'FontSize',fsize);case 'drawline'   % == Draw separation line ============================   h=get(hfigure,'UserData');              % get handlers   % get new line position from input arguments   theta=varargin{1};   alpha=varargin{2};   if mod(h.stepcnt,2)==1 & h.line.t >0,      set(h.badpoint.handler,'Visible','on',...         'XData',alpha(1),'YData',alpha(2));   else     set(h.badpoint.handler,'Visible','off');      % Cut off line along axes     [x1,y1,x2,y2,in]=cliplin1(alpha,theta,getaxis(h.axes1));     % erase old line     set(h.line.handler,'Visible','off');      % draw new line if is in the axes      if in==1,         set(h.line.handler,...           'XData',[x1 x2],...           'YData',[y1 y2],...           'LineWidth',LINE_WIDTH,...           'Visible','on');      end   end    % flush draw queue   drawnow; case 'info'
   % == Invokes standard Matlab`s info box ==========================
   helpwin(mfilename);
end%========================================
function [text]=makeinfo(t,alpha,theta,solution)
% assembles text description about current solution state

if solution==1,
   txline{1}=sprintf('Solution is found after t=%d step(s).',t);
else
   txline{1}=sprintf('Step t=%d',t);
end
txline{2}=sprintf('Linear function:');
txline{3}=sprintf('%f x + %f y = %f',alpha(1),alpha(2),theta);

text='';
for i=1:3,
   text=strvcat(text,txline{i});
end

return;
%===========================================function [alpha,theta,solution,tplus1]=exec(hfigure);h=get(hfigure,'UserData');                           if h.line.handler==-1,   return;end% get setssets=get(h.axes1,'UserData');% no data set loadedif isempty(sets)==1,   return;end% get parameterst=h.line.t;alpha=h.line.alpha;theta=h.line.theta;iter=max(1,round(str2num(get(h.editer,'String'))));epsil=str2num(get(h.edeps,'String'));if mod(h.stepcnt,2) ~= 0 & t > 0,  iter = -1;end% perform one adaptation stepswitch get(h.pualgo,'Value') case 1    [alpha,theta,solution,tplus1]=perceptr(sets.X,sets.I,iter,t,alpha,theta); case 2    [alpha,theta,solution,tplus1]=kozinec(sets.X,sets.I,iter,t,alpha,theta); case 3    [alpha,theta,solution,tplus1]=ekozinec(sets.X,sets.I,epsil,iter,t,...                                           alpha,theta);       case 4    [alpha,theta,solution]=linsvm(sets.X,sets.I);    if solution==0, solution=-1; end    tplus1=1; case 5%    [alpha,theta,solution,tplus1]=psum(sets.X,sets.I,10,iter,t,alpha,theta);% case 6%    [alpha,theta,solution,tplus1]=psumv(sets.X,sets.I,iter,t,alpha,theta);% case 7%    [alpha,theta,solution,tplus1]=navara1(sets.X,sets.I,iter,t,alpha,theta);% case 8%    [alpha,theta,solution,tplus1]=navarah1(sets.X,sets.I,iter,t,alpha,theta);% case 9%    [alpha,theta,solution]=simplex(sets.X,sets.I);%    if solution==0, solution=-1; end%    tplus1=1;endreturn

⌨️ 快捷键说明

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