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

📄 andrdemo.m

📁 四种SVM工具箱的分类与回归算法别人的
💻 M
📖 第 1 页 / 共 2 页
字号:
function result = andrdemo(action,hfigure,varargin)
% ANDRDEMO demo on Generalized Anderson's task.%% ANDRDEMO demonstrates the algorithms which solve %  the Generalized Anderson`s Task (GAT). %%  The found solution (hyperplane, line in 2D) is vizualized %  as well as the input Gaussians which describe input classes.%%  Following algorithms can be tested:%     %  e-Optimal - Epsilon-solution of the GAT.%  Original  - Original Anderson-Bahadur's solution for two distributions.%  Gradient  - Algorithm using theorem of the generalized gradient methods.%  General   - Implementation of general algorithm framework by SH10.%  General2  - Implementation of general algorithm framework, improved.%% Control:%  Algorithm  - select algorithm for testing.%  Parameter input line - parameters for the selected algorithm%             (see help 'given algorithm').%  Iterations - number of iterations in one step.%  Animation  - enable/dissable animation.%%  FIG2EPS     - export screen to the PostScript file.%  Load data   - load input point sets from file.%  Create data - call interactive program for creating sets of Gaussians.%  Reset       - set the tested algorithm to the initial state.%  Play        - run the tested algorithm.%  Stop        - stop the running algorithm.%  Step        - perform only one step.%  Info        - display the info box.%  Close       - close the program.%% See also EANDERS, OANDERS, GGANDERS, GANDERS, GANDERS2.%% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac
% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz
% Written Vojtech Franc (diploma thesis) 24.10.1999, 27.02.2000
% Modifications
% 11-June-2001, V.Franc, comments added.% 24. 6.00 V. Hlavac, comments polished.

% constants
ALGONAMES=['e-Optimal ';'Original  ';'Gradient  ';'General   ';'General 2 '];
PREC_TITLE=['Max error (0-50) [%]';...    % e-Optimal solution
            'd(lambda,ni) (0,inf)';...    % Original Anderson`s solution
            'd( min r ) (0,inf)  ';...    % Gradient method
            'd( min r ) (0,inf)  ';...    % General solution 1
            'd( min r ) (0,inf)  '];      % General solution 2
DEF_PRECISION=[5,1e-3,0,0,0];     % default values of the precision of algo. 1,2,3,4,5
BORDER=0.5;
DATA_IDENT='Infinite sets, Normal distributions';       % M-file identifier
%PLOT_FCE='pandr2d';     % outlined ellipsoids
PLOT_FCE='pandr2df';     % outlined ellipsoids

% if number of arguments is less then 1, that means first call of this function. Every
% other calls set up at least argument action
if nargin < 1,
   action = 'initialize';
end

% what action is required ?
switch lower(action)

case 'initialize'
   % == Initialize user interface control and figure window ================

   % == Figure =============================================================
   left=0.1;
   width=0.8;
   bottom=0.1;
   height=0.8;
   hfigure=figure('Name','Anderson`s task', ...
      'Visible','off',...
      'Units','normalized', ...
       'NumberTitle','off', ...
      'Position',[left bottom width height],...
      'tag','Andrdemo',...
      'Units','normalized', ...
      'RendererMode','manual');

   % == Axes ===============================================================
   left=0.1;
   width=0.65;

   % axes for showing sets
   bottom=0.35;
   height=0.60;
   haxes1=axes(...
       'Units','normalized', ...
      'Box','on', ...
      'DrawMode','fast',...
      'NextPlot','add',...
      'Layer','top',...
      'UserData',[],...
      'Position',[left bottom width height]);
   xlabel('feature x');
   ylabel('feature y');

   % == Comment window =====================================================

   % Comment Window frame
   bottom=0.05;
   height=0.2;
   uicontrol( ...
        'Style','frame', ...
        'Units','normalized', ...
        'Position',[left bottom width height], ...
        'BackgroundColor',[0.5 0.5 0.5]);

   % Text label
   uicontrol( ...
        'Style','text', ...
        'Units','normalized', ...
        'Position',[left height-0.01 width 0.05], ...
        'BackgroundColor',[0.5 0.5 0.5], ...
        'ForegroundColor',[1 1 1], ...
        'String','Comment Window');

   % Edit window
   border=0.01;
   hconsole=uicontrol( ...
        'Style','edit', ...
        'HorizontalAlignment','left', ...
        'Units','normalized', ...
        'Max',10, ...
        'BackgroundColor',[1 1 1], ...
        'Position',[left+border bottom width-2*border height-0.05], ...
        'Enable','inactive',...
        'String','');


    % == Buttons ===========================================================
   % -- Export to EPS ---------
   width=0.1;
   left=0.75-width;
   bottom=0.95;
   height=0.04;
   hbtclose = uicontrol(...
    'Units','Normalized', ...
      'Callback','fig2eps(gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','FIG2EPS');
   %----------------------------------

   % Close button
   left=0.8;
   bottom=0.05;
   height=0.05;
   width=0.15;
   hbtclose = uicontrol(...
    'Units','Normalized', ...
      'Callback','close(gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
        'String','Close');

   % Info button: call stanard info box
   bottom=bottom+1.5*height;
   hbtinfo = uicontrol(...
    'Units','Normalized', ...
      'Callback','andrdemo(''info'',gcf)',...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
        'String','Info');

   % Step button: perform one adaptation step
   bottom=bottom+1.5*height;
    hbtstep = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Step', ...
      'Interruptible','off',...
      'Callback','andrdemo(''step'',gcf)');

   % Stop button: stop process of adaptation
   bottom=bottom+height;
   hbtstop = uicontrol(...
    'Units','Normalized', ...
        'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Stop', ...
      'Callback','set(gcbo,''UserData'',1)',...
      'Enable','off');

   % Play button: start up adaptation
   bottom=bottom+height;
   hbtplay = uicontrol(...
    'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Play', ...
      'Callback','andrdemo(''play'',gcf)');

   % Reset button: set up t = 0
   bottom=bottom+height;
    hbtreset = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Reset', ...
      'Callback','andrdemo(''reset'',gcf)');

   % Create data
   bottom=bottom+1.5*height;
    hbtcreat = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Create data', ...
      'Callback','andrdemo(''creatdata'',gcf)');

   % Load data
   bottom=bottom+1*height;
    hbtload = uicontrol(...
      'Units','Normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'String','Load data', ...
      'Callback','andrdemo(''getfile'',gcf)');

   % == Check boxes ===============================================================

   % Make chack box to determine if a line will be drawn in one step or smoothly.
   bottom=bottom+height*1.2;
    hxbanim = uicontrol(...
    'Style','checkbox', ...
       'Units','normalized', ...
    'ListboxTop',0, ...
       'Position',[left bottom width height], ...
    'String','Animation');


   % == Popup menus ==========================================================

   % Pop up menu for the selection between algorithms
    % title
   bottom=0.95-height;
   htxalgo=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String','Algorithm');
   % popup menu
   bottom=bottom-0.9*height;
   hpualgo=uicontrol( ...
      'Style','popup', ...
      'Units','normalized', ...
      'CallBack','andrdemo(''algohandler'',gcf)',...
      'Position',[left bottom width height], ...
      'UserData',1,...
      'String',ALGONAMES);


   % == Edit lines ================================================================

   bottom=0.95-3.5*height;
   % Precision of solution
   htxprec=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String',PREC_TITLE(1,:));

   bottom=bottom-height;
   hedprec = uicontrol(...
    'Units','normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'Style','edit',...
      'String',num2str(DEF_PRECISION(1)) );

   % # of iterations
   bottom=bottom-1.5*height;
   htxiter=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String','Iterations');

   bottom=bottom-0.9*height;
   hediter = uicontrol(...
    'Units','normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'Style','edit',...
      'String',1);

    % ==============================================================================

   % Store handlers
   handlers=struct(...
      'line',struct('handler',-1,'alpha',0,'alpha1',0,'alpha2',0,'lambda',0,'theta',0,'t',0),...
      'btstep',hbtstep,...
      'btstop',hbtstop,...
      'btclose',hbtclose,...
      'btplay',hbtplay,...
      'btreset',hbtreset,...
      'btinfo',hbtinfo,...
      'btload',hbtload,...
      'btcreat',hbtcreat,...
      'pualgo',hpualgo,...
      'console',hconsole,...
      'edprec',hedprec,...
      'editer',hediter,...
      'txprec',htxprec,...
      'axes1',haxes1,...
      'xbanim',hxbanim);

   set(hfigure,'UserData',handlers);

   % Reset adaptation, t=0
   andrdemo('reset',hfigure);

   % Put figure on desktop
   set(hfigure,'Visible','on');

   drawnow;


case 'creatdata'
   % == Invoke data set creator ============================================
   creatset('normal',2,'andrdemo','created',hfigure);


case 'created'
   % == Load new created data set ===========================================

   % get handler and make this figure active
   figure(hfigure);
   h=get(hfigure,'UserData');

   % get file name
   path=varargin{1};
   name=varargin{2};
   pathname=strcat(path,name);

   if checkdat(pathname,DATA_IDENT,2,[0 0])==1,
      file.pathname=pathname;
      file.path=path;
      file.name=name;
      set(h.btload,'UserData',file);
      andrdemo('loadsets',hfigure);
      andrdemo('reset',hfigure);
   else
      errordlg('This file does not contain required data.','Bad file','modal');
   end


case 'getfile'
   % == Invoke standard open file dialog ====================================
   % Opens file and checks if contains apropriate data, if yes loads data.

   h=get(hfigure,'UserData');

   % change path to directory
%%   wres=what('anderson');
%%   cd(wres.path);

   [name,path]=uigetfile('*.mat','Open file');
   if name~=0,
      file.pathname=strcat(path,name);
      file.path=path;
      file.name=name;

⌨️ 快捷键说明

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