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

📄 mmdemo.m

📁 1、工具箱:LS_SVMlab Classification_LS_SVMlab.m - 多类分类 Regression_LS_SVMlab.m - 函数拟合 2、工具箱:OSU_SVM3.
💻 M
📖 第 1 页 / 共 2 页
字号:
function []=mmdemo(action,hfigure,varargin)
% MMDEMO demo on the Minimax learning algorithm.
%
% MMDEMO demonstrates the Minimax learning algorithm on
%   a simple examples in 2-dimensional feature space.
%
%   Minimax learning algorithm for Gaussian model estimates
%   a covarinace matrix and a mean value of the Gaussian from 
%   given traning set. The training set is supposed to contain
%   patterns well describing the problem (having high value 
%   of p.d.f). The patterns need not to be randomly and 
%   independently selected. 
%   
%   Informaly speeking, this algorihm search for an ellipsoid
%   containing the point set and having minimal diameter
%   (see help mmln for more details).
%
%   The found model is described by an ellipsoid (shape of 
%   covariance) and a crose (mean value vector). The upper (blue)
%   and lower (red) bound of the optimal solution is displayed 
%   as well.
%
% Controling:
%  Epsilon    - stop condition of the algorithm - a difference between
%               upper and lower bound of the optimal solution.
%  Iterations - number of iterations in one step.
%
%  FIG2EPS     - export screen to the PostScript file.
%  Load data   - load input point sets from file.
%  Create data - invoke program for creating point sets.
%  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        - invoke the info box.
%  Close       - close the program.
%
% See also MMLN.
%

% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac
% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz
% Written Vojtech Franc (diploma thesis) 10.12.1999, 27.02.2000, 5.4.2000
% Modifications
% 11-june-2001, V.Franc, comments added.
% 24. 6.00 V. Hlavac, comments polished.

% Used functions: PPOINTS, ELLIPS

BORDER=0.25;           % space between window limits and the points
CENTERSIZE=10;         % size of center point
LINE_WIDTH=1;
AXIST_ADD=10;
DATA_IDENT='Finite sets, Enumeration';   % file identifier

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.2;
   width=0.6;
   bottom=0.1;
   height=0.8;
   hfigure=figure('Name','Minimax learning', ...
      'Visible','off',...
      'NumberTitle','off', ...
      'Units','normalized', ...
      'Position',[left bottom width height],...
      'tag','Mmdemo',...
      'doublebuffer','on',...
      'backingstore','off');

   % == Axes ===============================================================
   % axes with prob.
   left=0.1;
   width=0.65;
   bottom=0.1;
   height=0.28;
   haprob=axes(...
       'Units','normalized', ...
      'NextPlot','add',...
      'Position',[left bottom width height]);
   title('blue - log p(x), red - \Sigma \alpha(x) log p(x)',...
      'Parent',haprob,...
      'VerticalAlignment','bottom',...
      'Units','normalized',...
      'HorizontalAlignment','left',...
      'Position',[0 1 0]);
   htxsteps=xlabel('step number');

   % points
   height=0.45;
   bottom=0.5;
%      'XTick',[],'YTick',[], ...
   haset=axes(...
      'Units','normalized', ...
      'NextPlot','add',...
      'Position',[left bottom width height]);
   ylabel('feature y');
   xlabel('feature x');

    % == 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','mmdemo(''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','mmdemo(''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','mmdemo(''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','mmdemo(''reset'',gcf)');

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

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

   % == Edit line ==========================================================

   % epsilon
   bottom=0.95-height;
   htxeps=uicontrol( ...
      'Style','text', ...
      'Units','normalized', ...
      'Position',[left bottom width 0.9*height], ...
      'String','epsilon');
   bottom=bottom-height;
   hedeps = uicontrol(...
    'Units','normalized', ...
      'ListboxTop',0, ...
        'Position',[left bottom width height], ...
      'Style','edit',...
      'String','0.1');

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

   % == Texts ===========================================================

   htitle1=title('No data loaded',...
      'Parent',haset,...
      'VerticalAlignment','bottom',...
      'HorizontalAlignment','left',...
      'Units','normalized',...
      'Position',[0 1 0]);

   %=====================================================================
   % Store handlers
   handlers=struct(...
      'ellipse',struct('handler',-1,'center',-1,'mi',[],'sigma',[],'t',0,'N',[]),...
      'plot1',struct('handler',-1,'topps',[],'axist',0,'time',[]),...
      'plot2',struct('handler',-1,'minps',[]),...
      'title1',htitle1,...
      'btstep',hbtstep,...
      'btstop',hbtstop,...
      'btclose',hbtclose,...
      'btplay',hbtplay,...
      'btreset',hbtreset,...
      'btinfo',hbtinfo,...
      'btload',hbtload,...
      'btcreat',hbtcreat,...
      'txsteps',htxsteps,...
      'txeps',htxeps,...
      'txiter',htxiter,...
      'aset',haset,...
      'aprob',haprob,...
      'editer',hediter,...
      'edeps',hedeps);
   set(hfigure,'UserData',handlers)

   % Reset
   mmdemo('reset',hfigure);

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


case 'play'
   % == One step learning ==============================================
   h=get(hfigure,'UserData');

   % get data set
   sets=get(h.aset,'UserData');

   % are data sets loaded ?
   if isempty(sets)==1,
      return;
   end

   % disable button
   set([h.editer,h.edeps,h.btstep,h.btclose,h.btplay,...
        h.btreset,h.btinfo,h.btload,h.btcreat,h.txeps,h.txiter],...
      'Enable','off');
   % enable stop button
   set(h.btstop,'Enable','on');

   % get # of iter and epsilon
   iter=str2num(get(h.editer,'String'));
   epsilon=str2num(get(h.edeps,'String'));

   % set stop button
   set(h.btstop,'UserData',0);

   % start point for plot
   if h.ellipse.t==0 & iter > 1,
      [mi,sigma,solution,minp,topp]=mmln(sets.X,epsilon,1,0);

⌨️ 快捷键说明

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