?? andrdemo.m
字號:
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 + -