?? pboundary.html
字號:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>pboundary.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>varargout</span>=<span class=defun_name>pboundary</span>(<span class=defun_in>model,options</span>)<br><span class=h1>% PBOUNDARY Plots decision boundary of given classifier in 2D.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% h = pboundary(model)</span><br><span class=help>% h = pboundary(model,options)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% This function plots decision boundary of given classifier in </span><br><span class=help>% 2-dimensional feature space. The classification function</span><br><span class=help>% must be specified in the field model.eval. The decision</span><br><span class=help>% bounary is interpolated from the response of the classifier</span><br><span class=help>% y = feval( model.fun, X, model).</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% model [struct] Model of classifier.</span><br><span class=help>% .fun [string] Classification function.</span><br><span class=help>% </span><br><span class=help>% options [struct] Controls visualization:</span><br><span class=help>% .gridx [1x1] Sampling density in x-axis (default 200).</span><br><span class=help>% .gridy [1x1] Sampling density in y-axis (default 200).</span><br><span class=help>% .line_style [string] Used line-style to plot decision boundary.</span><br><span class=help>% .fill [1x1] If 1 then the class regions are filled. </span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% h [1 x nobjects] Handles of used graphics objects.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% data = load('riply_trn');</span><br><span class=help>% figure; </span><br><span class=help>% ppatterns(data);</span><br><span class=help>% pboundary( knnrule(data,1) );</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% PPATTERNS, PLINE.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 1-may-2004, VF</span><br><span class=help1>% 19-may-2003, VF</span><br><br><hr><span class=comment>% process inputs</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 1, <span class=error>error</span>(<span class=quotes>'Not enough input arguments.'</span>); <span class=keyword>end</span><br>model=c2s(model);<br><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, options=[]; <span class=keyword>else</span> options=c2s(options); <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'fill'</span>), options.fill=0; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'gridx'</span>), options.gridx = 200; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'gridy'</span>), options.gridy = 200; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'line_style'</span>), options.line_style = <span class=quotes>'k'</span>; <span class=keyword>end</span><br><br><span class=comment>% get hold option</span><br>old_hold = ishold;<br>hold on;<br><br><span class=comment>%</span><br>V = <span class=graph>axis</span>;<br>dx = (V(2)-V(1))/options.gridx;<br>dy = (V(4)-V(3))/options.gridy;<br><br>[X,Y] = meshgrid(V(1):dx:V(2),V(3):dy:V(4));<br><br><span class=comment>% make testing points</span><br>tst_data=[reshape(X<span class=quotes>',1,prod(size(X)));reshape(Y'</span>,1,prod(size(Y)))];<br><br><span class=comment>% classify points</span><br>D = <span class=eval>feval</span>( model.fun, tst_data, model );<br><br>h = plot_boundary( D, V(1):dx:V(2), V(3):dy:V(4), ...<br> options.fill, options.line_style );<br><br><span class=keyword>if</span> ~old_hold, hold off; <span class=keyword>end</span><br><br><span class=comment>% return handles if required</span><br><span class=keyword>if</span> <span class=stack>nargout</span> > 0, <span class=stack>varargout</span>{1} = h; <span class=keyword>end</span><br><br><span class=jump>return</span>;<br><br><span class=comment>%-------------------------------------------------------</span><br><span class=defun_kw>function</span> <span class=defun_out>h </span>= <span class=defun_name>plot_boundary</span>(<span class=defun_in> L, X_pos, Y_pos, fill_regions, linestyle </span>)<br><span class=comment>% Plots decision boudary. </span><br><span class=comment>%</span><br><br>dx=X_pos(2)-X_pos(1);<br>dy=Y_pos(2)-Y_pos(1);<br>m = length( X_pos );<br>n = length( Y_pos );<br><br>Z = NaN*ones( m+2, n+2 );<br>num_classes = max(L(:));<br><br><span class=comment>% mask=fspecial('gauss',[5 5],1) ; % fspecial is from images toolbox </span><br>mask = [0.0030 0.0133 0.0219 0.0133 0.0030;<br> 0.0133 0.0596 0.0983 0.0596 0.0133;<br> 0.0219 0.0983 0.1621 0.0983 0.0219;<br> 0.0133 0.0596 0.0983 0.0596 0.0133;<br> 0.0030 0.0133 0.0219 0.0133 0.0030];<br><br>h = []; <br><span class=keyword>for</span> i = 1:num_classes,<br> <br> A=L;<br> A(find(L==i))=1;<br> A(find(L~=i))=-1;<br> <br> A = reshape( A', m, n );<br> A = filter2(mask, A);<br> <br> Z(2:<span class=keyword>end</span>-1,2:<span class=keyword>end</span>-1) = A; <br> <br> [cc,tmp_h] = contour([X_pos(1)-dx,X_pos,X_pos(<span class=keyword>end</span>)+dx],...<br> [Y_pos(1)-dy,Y_pos,Y_pos(<span class=keyword>end</span>)+dy],Z',[-0 0],linestyle); <br> h = [h tmp_h(:)'];<br> <br> <span class=keyword>if</span> fill_regions,<br> <span class=keyword>while</span> ~isempty(cc)<br> len = cc(2,1);<br> tmp_h = fill(cc(1,2:len+1),cc(2,2:len+1),marker_color(i));<br> h = [h tmp_h(:)'];<br> cc(:,1:len+1) = [];<br> <span class=keyword>end</span> <br> <span class=keyword>end</span><br><span class=keyword>end</span><br><br><span class=jump>return</span>;<br><br></code>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -