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

📄 demo_emgmm.html

📁 很好的matlab模式识别工具箱
💻 HTML
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.solution=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t=0;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.edclasses,<span class=quotes>'String'</span>,num2str(sum(model.K)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.classes=sum(model.K);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.features=<span class=graph>get</span>(h.pufeatures,<span class=quotes>'Value'</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demo_emgmm(<span class=quotes>'step'</span>,hfigure);<br>&nbsp;<span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;else</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errordlg('This&nbsp;file&nbsp;does&nbsp;not&nbsp;contain&nbsp;required&nbsp;data.','Bad&nbsp;file','modal');</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;<span class=label>case</span>&nbsp;<span class=quotes>'play'</span><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;==&nbsp;Play&nbsp;============================================</span><br>&nbsp;&nbsp;&nbsp;h=<span class=graph>get</span>(hfigure,<span class=quotes>'UserData'</span>);<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;get&nbsp;data&nbsp;set</span><br>&nbsp;&nbsp;&nbsp;sets=<span class=graph>get</span>(h.axes1,<span class=quotes>'UserData'</span>);<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;Are&nbsp;data&nbsp;sets&nbsp;loaded&nbsp;?</span><br>&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;isempty(sets)==1&nbsp;|&nbsp;h.ellipse.solution==1,
<br><span class=comment>%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=sprintf(...</span><br><span class=comment>%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'No&nbsp;action&nbsp;performed.&nbsp;No&nbsp;data&nbsp;to&nbsp;work&nbsp;on.&nbsp;Load&nbsp;or&nbsp;create&nbsp;it!');</span><br><span class=comment>%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set(h.console,'String',text);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=jump>return</span>;<br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;disable&nbsp;button</span><br>&nbsp;&nbsp;&nbsp;<span class=graph>set</span>([h.editer,h.btstep,h.btclose,h.btplay,...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.btreset,h.btinfo,h.btload,h.btcreat,h.txiter],...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;enable&nbsp;stop&nbsp;button</span><br>&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.btstop,<span class=quotes>'Enable'</span>,<span class=quotes>'on'</span>);<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;get&nbsp;#&nbsp;of&nbsp;iterations</span><br>&nbsp;&nbsp;&nbsp;iter=str2num(<span class=graph>get</span>(h.editer,<span class=quotes>'String'</span>));<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;#&nbsp;of&nbsp;classes</span><br>&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;h.ellipse.t==0,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.classes=str2num(<span class=graph>get</span>(h.edclasses,<span class=quotes>'String'</span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.features=<span class=graph>get</span>(h.pufeatures,<span class=quotes>'Value'</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>([h.xbrandom,h.edclasses,h.txclasses,h.pufeatures,h.txfeatures],...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=quotes>'Enable'</span>,<span class=quotes>'off'</span>);<br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;Shall&nbsp;the&nbsp;init&nbsp;be&nbsp;random,&nbsp;yes&nbsp;or&nbsp;no&nbsp;?</span><br>&nbsp;&nbsp;&nbsp;randinit=<span class=graph>get</span>(h.xbrandom,<span class=quotes>'Value'</span>);<br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;set&nbsp;stop&nbsp;button</span><br>&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.btstop,<span class=quotes>'UserData'</span>,0);<br><br><br>&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;Play&nbsp;-&nbsp;adaptation&nbsp;process</span><br>&nbsp;&nbsp;&nbsp;play=1;&nbsp;<span class=comment>%&nbsp;flag&nbsp;1&nbsp;-&nbsp;not&nbsp;finished,&nbsp;1&nbsp;-&nbsp;finished;</span><br>&nbsp;&nbsp;&nbsp;<span class=keyword>while</span>&nbsp;play==1&nbsp;&&nbsp;<span class=graph>get</span>(h.btstop,<span class=quotes>'UserData'</span>)==0,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.rand&nbsp;=&nbsp;randinit;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>switch</span>&nbsp;3-h.ellipse.features,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=label>case</span>&nbsp;1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.cov_type&nbsp;=&nbsp;<span class=quotes>'full'</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=label>case</span>&nbsp;2,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.cov_type&nbsp;=&nbsp;<span class=quotes>'diag'</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.cov_type&nbsp;=&nbsp;3-h.ellipse.features;
</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.ncomp=h.ellipse.classes;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.tmax&nbsp;=&nbsp;iter+h.ellipse.t;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;h.ellipse.t&nbsp;&gt;=&nbsp;1,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.logL&nbsp;=&nbsp;h.ellipse.logL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.Alpha&nbsp;=&nbsp;h.ellipse.Alpha;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.t&nbsp;=&nbsp;h.ellipse.t;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.Mean&nbsp;=&nbsp;h.ellipse.mi;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.Cov&nbsp;=&nbsp;reshape(h.ellipse.sigma,2,2,size(h.ellipse.mi,2));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_model.Prior&nbsp;=&nbsp;h.ellipse.Pk;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model=emgmm(sets.X,options,init_model);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model=emgmm(sets.X,options);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.mi&nbsp;=&nbsp;model.Mean;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.sigma&nbsp;=&nbsp;reshape(&nbsp;model.Cov,2,2*size(model.Mean,2));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.Pk&nbsp;=&nbsp;model.Prior;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[tmp,eI]=max(model.Alpha);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.solution&nbsp;=&nbsp;model.exitflag;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t&nbsp;=&nbsp;model.t;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.Alpha&nbsp;=&nbsp;model.Alpha;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.logL&nbsp;=&nbsp;model.logL(<span class=keyword>end</span>);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;perform&nbsp;one&nbsp;learning&nbsp;step</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;h.ellipse.features==2,&nbsp;&nbsp;&nbsp;%&nbsp;correlated&nbsp;features</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t]=unsund(sets.X,h.ellipse.classes,iter,randinit,...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t,h.ellipse.mi,&nbsp;h.ellipse.sigma,h.ellipse.Pk);</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;%&nbsp;independent</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk,eI,h.ellipse.solution,...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t]=unsuni(sets.X,h.ellipse.classes,iter,randinit,...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.ellipse.t,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);
</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=<span class=io>sprintf</span>(<span class=quotes>'step&nbsp;number&nbsp;t=%d&nbsp;'</span>,h.ellipse.t);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;h.ellipse.solution==1,<br><span class=comment>%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=strvcat(text,'EM&nbsp;has&nbsp;converged.');</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=[text&nbsp;<span class=quotes>',EM&nbsp;has&nbsp;converged.'</span>];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;play=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.txsteps,<span class=quotes>'String'</span>,text);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.txsteps,<span class=quotes>'String'</span>,text);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val=&nbsp;mln(sets.X,h.ellipse.mi,h.ellipse.sigma,h.ellipse.Pk);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=<span class=io>sprintf</span>(<span class=quotes>'Log-likelihood,&nbsp;logL(t)&nbsp;=&nbsp;%f'</span>,val);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.title2,<span class=quotes>'String'</span>,text);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.graph1.time=[h.graph1.time,h.ellipse.t];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.graph1.loglik=[h.graph1.loglik,val];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ylimit=<span class=graph>get</span>(h.axes2,<span class=quotes>'YLim'</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;ylimit(2)&nbsp;&lt;&nbsp;val,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.axes2,<span class=quotes>'YLim'</span>,[ylimit(1)&nbsp;val+AXISY_ADD]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;is&nbsp;axis&nbsp;to&nbsp;be&nbsp;changed&nbsp;?</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;h.ellipse.t&nbsp;&gt;&nbsp;h.graph1.axist,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.graph1.axist=h.ellipse.t+iter*AXIST_ADD;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(h.axes2,<span class=quotes>'XLim'</span>,[1&nbsp;h.graph1.axist]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=quotes>'Visible'</span>,<span class=quotes>'on'</span>);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;h.ellipse.handler==-1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>axes</span>(h.axes1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[h.ellipse.handler,h.center]=...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pnmix(sets.X,h.ellipse.mi,h.ellipse.sigma,eI,h.ellipse.handler,h.center);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;comment</span><br><span class=comment>%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set(h.console,'String',text);</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;store&nbsp;data</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;flush&nbsp;it&nbsp;on&nbsp;desktop</span><br>

⌨️ 快捷键说明

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