📄 demo_emgmm.html
字号:
h.ellipse.solution=0;<br> h.ellipse.t=0;<br><br> <span class=graph>set</span>(h.edclasses,<span class=quotes>'String'</span>,num2str(sum(model.K)));<br> h.ellipse.classes=sum(model.K);<br> h.ellipse.features=<span class=graph>get</span>(h.pufeatures,<span class=quotes>'Value'</span>);<br> <br> <span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h); <br> <br> demo_emgmm(<span class=quotes>'step'</span>,hfigure);<br> <span class=comment>% else</span><br><span class=comment>% errordlg('This file does not contain required data.','Bad file','modal');</span><br><span class=comment>% end</span><br> <span class=keyword>end</span><br> <br> <br> <span class=label>case</span> <span class=quotes>'play'</span><br> <span class=comment>% == Play ============================================</span><br> h=<span class=graph>get</span>(hfigure,<span class=quotes>'UserData'</span>);<br><br> <span class=comment>% get data set</span><br> sets=<span class=graph>get</span>(h.axes1,<span class=quotes>'UserData'</span>);<br><br> <span class=comment>% Are data sets loaded ?</span><br> <span class=keyword>if</span> isempty(sets)==1 | h.ellipse.solution==1,
<br><span class=comment>%% text=sprintf(...</span><br><span class=comment>%% 'No action performed. No data to work on. Load or create it!');</span><br><span class=comment>%% set(h.console,'String',text);</span><br> <span class=jump>return</span>;<br> <span class=keyword>end</span><br><br> <span class=comment>% disable button</span><br> <span class=graph>set</span>([h.editer,h.btstep,h.btclose,h.btplay,...<br> h.btreset,h.btinfo,h.btload,h.btcreat,h.txiter],...<br> <span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br><br> <span class=comment>% enable stop button</span><br> <span class=graph>set</span>(h.btstop,<span class=quotes>'Enable'</span>,<span class=quotes>'on'</span>);<br><br> <span class=comment>% get # of iterations</span><br> iter=str2num(<span class=graph>get</span>(h.editer,<span class=quotes>'String'</span>));<br><br> <span class=comment>% # of classes</span><br> <span class=keyword>if</span> h.ellipse.t==0,<br> h.ellipse.classes=str2num(<span class=graph>get</span>(h.edclasses,<span class=quotes>'String'</span>));<br> h.ellipse.features=<span class=graph>get</span>(h.pufeatures,<span class=quotes>'Value'</span>);<br> <span class=graph>set</span>([h.xbrandom,h.edclasses,h.txclasses,h.pufeatures,h.txfeatures],...<br> <span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br> <span class=keyword>end</span><br><br> <span class=comment>% Shall the init be random, yes or no ?</span><br> randinit=<span class=graph>get</span>(h.xbrandom,<span class=quotes>'Value'</span>);<br><br> <span class=comment>% set stop button</span><br> <span class=graph>set</span>(h.btstop,<span class=quotes>'UserData'</span>,0);<br><br><br> <span class=comment>% Play - adaptation process</span><br> play=1; <span class=comment>% flag 1 - not finished, 1 - finished;</span><br> <span class=keyword>while</span> play==1 & <span class=graph>get</span>(h.btstop,<span class=quotes>'UserData'</span>)==0,<br>
<br> options.rand = randinit;
<br> <span class=keyword>switch</span> 3-h.ellipse.features,<br> <span class=label>case</span> 1,<br> options.cov_type = <span class=quotes>'full'</span>;<br> <span class=label>case</span> 2,<br> options.cov_type = <span class=quotes>'diag'</span>;<br> <span class=keyword>end</span><br><span class=comment>% options.cov_type = 3-h.ellipse.features;
</span><br> options.ncomp=h.ellipse.classes;
<br> options.tmax = iter+h.ellipse.t;
<br> <span class=keyword>if</span> h.ellipse.t >= 1,
<br> init_model.logL = h.ellipse.logL;<br> init_model.Alpha = h.ellipse.Alpha;
<br> init_model.t = h.ellipse.t;
<br> init_model.Mean = h.ellipse.mi;
<br> init_model.Cov = reshape(h.ellipse.sigma,2,2,size(h.ellipse.mi,2));
<br> init_model.Prior = h.ellipse.Pk;
<br> model=emgmm(sets.X,options,init_model);
<br> <span class=keyword>else</span><br> model=emgmm(sets.X,options);
<br> <span class=keyword>end</span><br>
<br> h.ellipse.mi = model.Mean;
<br> h.ellipse.sigma = reshape( model.Cov,2,2*size(model.Mean,2));
<br> h.ellipse.Pk = model.Prior;
<br> [tmp,eI]=max(model.Alpha);
<br> h.ellipse.solution = model.exitflag;
<br> h.ellipse.t = model.t;
<br> h.ellipse.Alpha = model.Alpha;
<br> h.ellipse.logL = model.logL(<span class=keyword>end</span>);
<br> <br> <span class=comment>% perform one learning step</span><br><span class=comment>% if h.ellipse.features==2, % correlated features</span><br><span class=comment>% [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...</span><br><span class=comment>% h.ellipse.t]=unsund(sets.X,h.ellipse.classes,iter,randinit,...</span><br><span class=comment>% h.ellipse.t,h.ellipse.mi, h.ellipse.sigma,h.ellipse.Pk);</span><br><span class=comment>% else % independent</span><br><span class=comment>% [h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...</span><br><span class=comment>% h.ellipse.t]=unsuni(sets.X,h.ellipse.classes,iter,randinit,...</span><br><span class=comment>% h.ellipse.t,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);
</span><br><span class=comment>% end</span><br><br> text=<span class=io>sprintf</span>(<span class=quotes>'step number t=%d '</span>,h.ellipse.t);<br> <span class=keyword>if</span> h.ellipse.solution==1,<br><span class=comment>%% text=strvcat(text,'EM has converged.');</span><br> text=[text <span class=quotes>',EM has converged.'</span>];<br> play=0;<br> <span class=graph>set</span>(h.txsteps,<span class=quotes>'String'</span>,text);<br> <span class=keyword>else</span><br> <span class=graph>set</span>(h.txsteps,<span class=quotes>'String'</span>,text);<br><br> val= mln(sets.X,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);<br><br> text=<span class=io>sprintf</span>(<span class=quotes>'Log-likelihood, logL(t) = %f'</span>,val);<br> <span class=graph>set</span>(h.title2,<span class=quotes>'String'</span>,text);<br> <br> h.graph1.time=[h.graph1.time,h.ellipse.t];<br> h.graph1.loglik=[h.graph1.loglik,val];<br><br> ylimit=<span class=graph>get</span>(h.axes2,<span class=quotes>'YLim'</span>);<br> <span class=keyword>if</span> ylimit(2) < val,<br> <span class=graph>set</span>(h.axes2,<span class=quotes>'YLim'</span>,[ylimit(1) val+AXISY_ADD]);<br> <span class=keyword>end</span> <br> <br> <span class=comment>% is axis to be changed ?</span><br> <span class=keyword>if</span> h.ellipse.t > h.graph1.axist,<br> h.graph1.axist=h.ellipse.t+iter*AXIST_ADD;<br> <span class=graph>set</span>(h.axes2,<span class=quotes>'XLim'</span>,[1 h.graph1.axist]);<br> <span class=keyword>end</span><br> <span class=graph>set</span>(h.graph1.handler,<span class=quotes>'XData'</span>,h.graph1.time,<span class=quotes>'YData'</span>,h.graph1.loglik,...<br> <span class=quotes>'Visible'</span>,<span class=quotes>'on'</span>); <br> <br> <br> <span class=keyword>if</span> h.ellipse.handler==-1,<br> <span class=graph>axes</span>(h.axes1);<br> <span class=keyword>end</span><br> [h.ellipse.handler,h.center]=...<br> pnmix(sets.X,h.ellipse.mi,h.ellipse.sigma,eI,h.ellipse.handler,h.center);<br> <span class=keyword>end</span><br><br> <span class=comment>% comment</span><br><span class=comment>%% set(h.console,'String',text);</span><br><br> <span class=comment>% store data</span><br> <span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h);<br><br> <span class=comment>% flush it on desktop</span><br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -