www.gusucode.com > 支持向量机的Matlab实现,支持多分类,据有GUI操作界面 > code11/MATLAB_svm_gui/visual/ppatterns.m
function varargout=ppatterns(data,arg1,arg2) % PPATTERNS Plots pattern as points in feature space. % % Synopsis: % ppatterns(data,marker_size) % ppatterns(data,'num') % ppatterns(X,marker,marker_size) % ppatterns(X,y) % ppatterns(X,y,marker_size) % ppatterns(X,y,'num') % % Description: % ppatterns(data,marker_size) plots data.X as points % distinguished by marker and its color according to % given labels data.y. The marker size can be prescribed. % % ppatterns(data,'num') plots data.X in distinguished % by numbers and colors according to given labels data.y. % The marker size can be determined by argument marker_size. % % ppatterns(X,marker,marker_size) plots data X. Marker type % can be determined by argument marker. The marker size can % be determined by argument marker_size. % % ppatterns(X,y,...) instead of structure data, which contains % items X and y these can enter the function directly. % % If dimension of input data is greater than 3 then % only first 3 dimensions are assumed and data are plotted % in 3D space. % % Output: % H [struct] Handles of used graphical objects. % % Example: % data = load('riply_trn'); % figure; ppatterns(data); % figure; ppatterns(data,'num'); % figure; ppatterns(data.X,'xk',10); % % See also % PLINE. % % About: Statistical Pattern Recognition Toolbox % (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac % <a href="http://www.cvut.cz">Czech Technical University Prague</a> % <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a> % <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a> % Modifications: % 25-may-2004, VF % 11-mar-2004, VF, % 5-oct-2003, VF, returns handles % 12-feb-2003, VF, 1D, 3D added % 7-jan-2003, VF, created oldhold = ishold; hold on; % takes care of the case when X,y is used insted of structure data % ppatterns(X,y,...) -> ppatterns(data,...) if nargin > 1 & ~isstruct(data) & size(data,2)==length(arg1) & ~isstr(arg1), data.X=data; data.y=arg1; if nargin >= 3, H=ppatterns(data,arg2); else H=ppatterns(data); end if nargout >= 1, varargout{1}=H; end return; end % ppatterns(data) or ppatterns(data,marker_size) if isstruct(data) == 1 & (nargin < 2 | isstr(arg1)==0), if nargin < 2, marker_size = 6; else marker_size = arg1; end H = []; for i = min(data.y):max(data.y), inx = find(data.y == i); if ~isempty(inx), if size(data.X,1)==1, h = plot(data.X(1,inx),zeros(1,length(inx)),marker_type(i)); elseif size(data.X,1)==2, h = plot(data.X(1,inx),data.X(2,inx),marker_type(i)); else h = plot3(data.X(1,inx),data.X(2,inx),data.X(3,inx),marker_type(i)); end set(h,'Color',marker_color(i)); set(h,'MarkerSize',marker_size); H = [H, h]; end end % ppatterns(data,marker) elseif isstruct(data) == 1 & nargin == 2 & isstr(arg1)==1 & strcmpi(arg1,'num'), marker_size = 12; H_Points = []; H_Num = []; for i = min(data.y):max(data.y), inx = find(data.y==i); if ~isempty(inx), if size(data.X,1)==1, h = plot(data.X(1,inx),zeros(1,length(inx)),'o'); elseif size(data.X,1)==2, h = plot(data.X(1,inx),data.X(2,inx),'o'); else h = plot3(data.X(1,inx),data.X(2,inx),data.X(3,inx),'o'); end set(h,'Color',marker_color(i)); set(h,'MarkerSize',marker_size); H_Points = [H_Points, h ]; if size(data.X,1)==1, h = text(data.X(1,inx),zeros(1,length(inx)),num2str(i)); elseif size(data.X,1)==2, h = text(data.X(1,inx),data.X(2,inx),num2str(i)); else h = text(data.X(1,inx),data.X(2,inx),data.X(3,inx),num2str(i)); end set(h,'HorizontalAlignment','center'); set(h,'VerticalAlignment','middle'); set(h,'Color',marker_color(i)); set(h,'FontSize',marker_size-2); H_Num = [H_Num, h(:)']; end end H = [H_Points, H_Num]; else if nargin < 2, marker = 'kx'; else marker = arg1; end if nargin < 3, marker_size = 6; else marker_size = arg2; end if size(data,1)==1, h = plot(data(1,:),zeros(1,size(data,2)),marker); elseif size(data,1)==2, h = plot(data(1,:),data(2,:),marker); else h = plot3(data(1,:),data(2,:),data(3,:),marker); end H = h; set(h,'MarkerSize',marker_size); end if oldhold, hold on; else hold off; end if nargout>=1, varargout{1} = H; end return;