📄 demo_linclass.html
字号:
h.<span class=graph>line</span>.t=0;<br> h.<span class=graph>line</span>.theta=0;<br> h.<span class=graph>line</span>.alpha=[0;0];<br> <br> h.stepcnt=0;<br><br> <span class=keyword>if</span> h.<span class=graph>line</span>.handler==-1,<br> <span class=comment>% create line</span><br> <span class=graph>axes</span>(h.axes1);<br> <br> h.<span class=graph>line</span>.handler=...<br> <span class=graph>line</span>(<span class=quotes>'EraseMode'</span>,<span class=quotes>'xor'</span>,<span class=quotes>'Color'</span>,<span class=quotes>'k'</span>,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>,<span class=quotes>'Parent'</span>,h.axes1);<br><br> h.badpoint.handler=<span class=graph>line</span>(<span class=quotes>'EraseMode'</span>,<span class=quotes>'xor'</span>,<span class=quotes>'Color'</span>,<span class=quotes>'k'</span>,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>,...<br> <span class=quotes>'Parent'</span>,h.axes1,...<br> <span class=quotes>'Marker'</span>,<span class=quotes>'o'</span>,...<br> <span class=quotes>'MarkerSize'</span>,WRONGPOINT_SIZE);<br> <br> <br> drawnow;<br> <span class=keyword>else</span><br> <span class=comment>% change parameters of line</span><br> <span class=graph>set</span>(h.<span class=graph>line</span>.handler,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>);<br> <span class=graph>set</span>(h.badpoint.handler,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>);<br> <span class=keyword>end</span> <span class=comment>% if hline==-1</span><br><br> <span class=comment>% set up handlers and flush queue with graph. objects</span><br> <span class=graph>set</span>(hfigure,<span class=quotes>'UserData'</span>,h);<br><br> <span class=comment>% create comment</span><br> <span class=keyword>if</span> isempty(sets)==0,<br> consoletext=<span class=io>sprintf</span>(<span class=quotes>'Step t=0\nNo separation line'</span>);<br> titletext=<span class=io>sprintf</span>(<span class=quotes>'Data file: %s, %d vectors'</span>,file.name,sum(sets.K));<br> <span class=keyword>else</span><br> consoletext=<span class=io>sprintf</span>([<span class=quotes>'No data loaded.\nPress Load data button.\n'</span>,...<br> <span class=quotes>'Load sample data from ../toolboxroot/data/binary_separable'</span>]);<br> titletext=<span class=quotes>''</span>;<br><br> pos=<span class=graph>get</span>(h.axes1,<span class=quotes>'Position'</span>);<br> fsize=min(pos(3),pos(4))/10;<br> setaxis(h.axes1,[-1 1 -1 1]);<br> <span class=graph>axis</span>([-1 1 -1 1]);<br> <br> <span class=eval>builtin</span>(<span class=quotes>'text'</span>,0,0,<span class=quotes>'Press '</span><span class=quotes>'Load data'</span><span class=quotes>' button.'</span>,...<br> <span class=quotes>'HorizontalAlignment'</span>,<span class=quotes>'center'</span>,...<br> <span class=quotes>'FontUnits'</span>,<span class=quotes>'normalized'</span>,...<br> <span class=quotes>'Clipping'</span>,<span class=quotes>'on'</span>,...<br> <span class=quotes>'FontSize'</span>,fsize);<br> <span class=keyword>end</span><br><br> <span class=comment>% show comment</span><br> <span class=graph>set</span>(h.console,<span class=quotes>'String'</span>,consoletext );<br><br> <span class=comment>% print title</span><br> pos=<span class=graph>get</span>(h.axes1,<span class=quotes>'Position'</span>);<br> fsize=(1-pos(2)-pos(4))*1;<br> title(titletext,...<br> <span class=quotes>'Parent'</span>,h.axes1,...<br> <span class=quotes>'VerticalAlignment'</span>,<span class=quotes>'bottom'</span>,...<br> <span class=quotes>'HorizontalAlignment'</span>,<span class=quotes>'left'</span>,...<br> <span class=quotes>'FontUnits'</span>,<span class=quotes>'normalized'</span>,...<br> <span class=quotes>'Units'</span>,<span class=quotes>'normalized'</span>,...<br> <span class=quotes>'Position'</span>,[0 1 0],...<br> <span class=quotes>'FontSize'</span>,fsize);<br><br><br><span class=label>case</span> <span class=quotes>'drawline'</span><br> <span class=comment>% == Draw separation line ============================</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 new line position from input arguments</span><br> theta=<span class=stack>varargin</span>{1};<br> alpha=<span class=stack>varargin</span>{2};<br><br> <span class=keyword>if</span> mod(h.stepcnt,2)==1 & h.<span class=graph>line</span>.t >0, <br> <span class=graph>set</span>(h.badpoint.handler,<span class=quotes>'Visible'</span>,<span class=quotes>'on'</span>,...<br> <span class=quotes>'XData'</span>,alpha(1),<span class=quotes>'YData'</span>,alpha(2));<br> <span class=keyword>else</span><br> <span class=graph>set</span>(h.badpoint.handler,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>);<br> <br> <span class=comment>% Cut off line along axes</span><br> [x1,y1,x2,y2,in]=cliplin1(alpha,theta,getaxis(h.axes1));<br><br> <span class=comment>% erase old line</span><br> <span class=graph>set</span>(h.<span class=graph>line</span>.handler,<span class=quotes>'Visible'</span>,<span class=quotes>'off'</span>);<br><br> <span class=comment>% draw new line if is in the axes</span><br> <span class=keyword>if</span> in==1,<br> <span class=graph>set</span>(h.<span class=graph>line</span>.handler,...<br> <span class=quotes>'XData'</span>,[x1 x2],...<br> <span class=quotes>'YData'</span>,[y1 y2],...<br> <span class=quotes>'LineWidth'</span>,LINE_WIDTH,...<br> <span class=quotes>'Visible'</span>,<span class=quotes>'on'</span>);<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br><br> <span class=comment>% flush draw queue</span><br> drawnow;<br> <br><br><span class=label>case</span> <span class=quotes>'info'</span><br> <span class=comment>% == Invokes standard Matlab`s info box ==========================</span><br> helpwin(mfilename);<br><span class=keyword>end</span><br><br><br><br><span class=comment>%========================================</span><br><span class=defun_kw>function</span> <span class=defun_out>[text]</span>=<span class=defun_name>makeinfo</span>(<span class=defun_in>t,alpha,theta,solution</span>)<br><span class=comment>% assembles text description about current solution state</span><br><br><span class=keyword>if</span> solution==1,<br> txline{1}=<span class=io>sprintf</span>(<span class=quotes>'Solution was found after t=%d step(s).'</span>,t);<br><span class=keyword>else</span><br> txline{1}=<span class=io>sprintf</span>(<span class=quotes>'Step t=%d'</span>,t);<br><span class=keyword>end</span><br>txline{2}=<span class=io>sprintf</span>(<span class=quotes>'Linear decision function:'</span>);<br>txline{3}=<span class=io>sprintf</span>(<span class=quotes>'%f x_1 + %f x_2 + %f = 0'</span>,alpha(1),alpha(2),-theta);<br><br>text=<span class=quotes>''</span>;<br><span class=keyword>for</span> i=1:3,<br> text=strvcat(text,txline{i});<br><span class=keyword>end</span><br><br><span class=jump>return</span>;<br><br><br><span class=comment>%===========================================</span><br><span class=defun_kw>function</span> <span class=defun_out>[alpha,theta,solution,tplus1]</span>=<span class=defun_name>exec</span>(<span class=defun_in>hfigure</span>);<br><br>h=<span class=graph>get</span>(hfigure,<span class=quotes>'UserData'</span>); <br><br><span class=keyword>if</span> h.<span class=graph>line</span>.handler==-1,<br> <span class=jump>return</span>;<br><span class=keyword>end</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>% no data set loaded</span><br><span class=keyword>if</span> isempty(sets)==1,<br> <span class=jump>return</span>;<br><span class=keyword>end</span><br><br><span class=comment>% get parameters</span><br>t=h.<span class=graph>line</span>.t;<br>alpha=h.<span class=graph>line</span>.alpha;<br>theta=h.<span class=graph>line</span>.theta;<br><br>iter=max(1,round(str2num(<span class=graph>get</span>(h.editer,<span class=quotes>'String'</span>))));<br>epsil=str
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -