📄 demo_anderson.html
字号:
<span class=comment>% Get file name</span><br> file=<span class=graph>get</span>(h.btload,<span class=quotes>'UserData'</span>);<br> <span class=keyword>if</span> isempty(file)==0,<br><br> <span class=comment>% Load sets</span><br> sets=load(file.pathname);<br><br> sets.MI = sets.Mean;<br> sets.SIGMA = reshape(sets.Cov,2,2*size(sets.Mean,2));<br> sets.I = sets.y;<br> sets.K = zeros(1,max(sets.y));<br> sets.N = size(sets.Mean,1);<br> <span class=keyword>for</span> i=1:max(sets.y),<br> sets.K(i) = length(find(sets.y==i));<br> <span class=keyword>end</span><br> <br> <span class=comment>% algorithm 2 (Original Anderson`s) solution find solution </span><br> <span class=comment>% for two distributions only</span><br> <span class=keyword>if</span> <span class=graph>get</span>(h.pualgo,<span class=quotes>'Value'</span>)==2,<br> <span class=comment>% get only one distribution from each class</span><br> class1=0;<br> class2=0;<br> NI=[];<br> NMI=[];<br> NSIGMA=[];<br> NK=[1 1];<br> N = 2;<br> i=0;<br> <span class=keyword>while</span> i<sets.K | class1==0 |class2==0,<br> i=i+1;<br> <span class=keyword>if</span> sets.I(i)==1 & class1==0,<br> class1=1;<br> NI=[NI,1];<br> NMI=[NMI,sets.MI(:,i)];<br> NSIGMA=[NSIGMA,sets.SIGMA(:,(i-1)*2+1:i*2)];<br> <span class=keyword>elseif</span> sets.I(i)==2 & class2==0,<br> class2=1;<br> NI=[NI,2];<br> NMI=[NMI,sets.MI(:,i)];<br> NSIGMA=[NSIGMA,sets.SIGMA(:,(i-1)*2+1:i*2)];<br> <span class=keyword>end</span><br> <span class=keyword>end</span> <span class=comment>% while</span><br><br> <span class=comment>% replace old values</span><br> sets.MI=NMI;<br> sets.SIGMA=NSIGMA;<br> sets.I=NI;<br> sets.K=NK;<br> <span class=keyword>end</span> <span class=comment>% if get(h.pualgo,....</span><br> <span class=keyword>else</span><br> <span class=comment>% No set is loaded.</span><br> sets=[];<br> <span class=keyword>end</span><br><br> <span class=comment>% store sets</span><br> <span class=graph>set</span>(h.axes1,<span class=quotes>'UserData'</span>,sets);<br><br><br><span class=label>case</span> <span class=quotes>'play'</span><br> <span class=comment>% == Start up the adaptation process =======================================</span><br> <span class=comment>% Perform the adaptation step by step until the solution is found or stop</span><br> <span class=comment>% button is pushed down.</span><br><br> h=<span class=graph>get</span>(hfigure,<span class=quotes>'UserData'</span>); <span class=comment>% get handlers</span><br><br> <span class=comment>% get sets</span><br> sets=<span class=graph>get</span>(h.axes1,<span class=quotes>'UserData'</span>);<br><br> <span class=comment>% if some set is loaded then perform on step</span><br> <span class=keyword>if</span> isempty(sets)==0,<br><br> <span class=comment>% Disable buttons everything axcept</span><br> <span class=graph>set</span>([h.btinfo h.btstep h.btclose h.btplay h.btreset h.btload h.pualgo ...<br> h.btcreat h.editer h.edprec h.xbanim],<span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br><br> <span class=comment>% Only stop button can be pushed down</span><br> <span class=graph>set</span>(h.btstop,<span class=quotes>'Enable'</span>,<span class=quotes>'on'</span>);<br><br> <span class=comment>% Stop button was not pushed down</span><br> <span class=graph>set</span>(h.btstop,<span class=quotes>'UserData'</span>,0);<br> play=1;<br><br> <span class=comment>% get arguments from dialog</span><br> anim=<span class=graph>get</span>(h.xbanim,<span class=quotes>'Value'</span>);<br><br> <span class=comment>% Play - adaptation process</span><br> <span class=keyword>while</span> play==1 & <span class=graph>get</span>(h.btstop,<span class=quotes>'UserData'</span>)==0,<br><br> <span class=comment>% get arguments from dialog</span><br> oldtheta=h.<span class=graph>line</span>.theta;<br> oldalpha=h.<span class=graph>line</span>.alpha;<br><br> <span class=comment>% call algorithm</span><br> [h,text,play,solution]=callalgo(h,sets);<br><br> <span class=comment>% appear result</span><br> <span class=graph>set</span>(h.console,<span class=quotes>'String'</span>,text );<br> drawnow;<br><br> <span class=keyword>if</span> play~=-1,<br> <span class=comment>% plot result</span><br> <span class=keyword>if</span> h.<span class=graph>line</span>.handler==-1,<br> <span class=graph>axes</span>(h.axes1);<br> h.<span class=graph>line</span>.handler=<span class=eval>feval</span>(PLOT_FCE,sets.MI,sets.SIGMA,sets.I,...<br> h.<span class=graph>line</span>.alpha,h.<span class=graph>line</span>.theta );<br> <span class=keyword>else</span><br> <span class=eval>feval</span>(PLOT_FCE,sets.MI,sets.SIGMA,sets.I,h.<span class=graph>line</span>.alpha,h.<span class=graph>line</span>.theta,...<br> h.<span class=graph>line</span>.handler,anim,oldalpha,oldtheta);<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br><br> <span class=comment>% hands on control to MATLAB</span><br> drawnow;<br> <span class=keyword>end</span> <span class=comment>% while play == 1 & get(...</span><br><br> <span class=comment>% store new solution</span><br> <span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h);<br><br> <span class=comment>% enable these buttons</span><br> <span class=graph>set</span>([h.btinfo h.btstep h.btclose h.btplay h.btreset h.btload ...<br> h.btcreat h.pualgo h.editer h.edprec h.xbanim],<span class=quotes>'Enable'</span>,<span class=quotes>'on'</span>);<br><br> <span class=comment>% disable stop button</span><br> <span class=graph>set</span>(h.btstop,<span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br><br> <span class=keyword>else</span> <span class=comment>% isempty(sets)==0,</span><br> <span class=comment>% write down description</span><br> text=<span class=io>sprintf</span>([<span class=quotes>'No data loaded.\nPress Load data or Create data button.\n'</span>, ...
<br> <span class=quotes>'Load sample data from ../toolboxroot/data/anderson_task/'</span> ] );<br> <span class=graph>set</span>(h.console,<span class=quotes>'String'</span>,text );<br> <span class=keyword>end</span> <br><br><br><span class=label>case</span> <span class=quotes>'step'</span><br> <span class=comment>% == Perform one adaptation step ================================================</span><br> h=<span class=graph>get</span>(hfigure,<span class=quotes>'UserData'</span>); <span class=comment>% get handlers we will need...</span><br><br> <span class=comment>% get sets</span><br> sets=<span class=graph>get</span>(h.axes1,<span class=quotes>'UserData'</span>);<br><br> <span class=comment>% if some set is loaded then perform on step</span><br> <span class=keyword>if</span> isempty(sets)==0,<br><br> <span class=comment>% get arguments from dialog</span><br> anim=<span class=graph>get</span>(h.xbanim,<span class=quotes>'Value'</span>);<br> oldtheta=h.<span class=graph>line</span>.theta;<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -