Code covered by the BSD License  

Highlights from
Statistical Learning Toolbox

from Statistical Learning Toolbox by Dahua Lin
Functions for statistical learning, pattern recognition and computer vision, covering many topics.

sldrawlabeledpts(X, labels, labelset, plotsyms, varargin)
function h = sldrawlabeledpts(X, labels, labelset, plotsyms, varargin)
%SLDRAWLABELEDPTS Draws Labeled 2D or 3D points
%
% $ Syntax $
%   - sldrawlabeledpts(X, labels)
%   - sldrawlabeledpts(X, labels, labelset)
%   - sldrawlabeledpts(X, labels, labelset, plotsyms, ...)
%   - h = sldrawlabeledpts(...)
%
% $ Arguments $
%   - X:            the sample matrix (2 x n or 3 x n)
%   - labels:       the row vector of labels of the samples
%   - labelset:     the set of used labels
%   - plotsyms:     the plotting symbols for the labels
%   - h:            the handles of the plots
%
% $ Description $
%   - sldrawlabeledpts(X, labels) draws a set of 2D or 3D samples 
%     with different labels using different plotting symbols.
%
%   - sldrawlabeledpts(X, labels, labelset) also specifies the 
%     set of labels that may be used.
%
%   - sldrawlabeledpts(X, labels, labelset, plotsyms, ...) specifies
%     the plotting symbols or even extra plotting properties.
%
%   - h = sldrawlabeledpts(...) returns the vector of handles to the
%     plottings.
%
% $ Remarks $
%   - If labelset is not specified, then it will be automatically 
%     generated by applying function unique on labels. The plotsyms
%     will be used following the order in labelset.
%   
%   - The points with labels not in labelset will not be plotted.
%
%   - The implementation is based on sldrawpts.
%
% $ History $
%   - Created by Dahua Lin, on Aug 28, 2006
%

%% Parse and verify input arguments

if nargin < 2
    raise_lackinput('sldrawlabeledpts', 2);
end

if ~isnumeric(X) || ndims(X) ~= 2
    error('sltoolbox:invalidarg', ...
        'X should be a 2D numeric matrix');
end

n = size(X, 2);

if ~isequal(size(labels), [1 n])
    error('sltoolbox:sizmismatch', ...
        'The labels should be a 1 x n row vector');
end

if nargin < 3 || isempty(labelset)
    labelset = unique(labels);
end

if nargin < 4 || isempty(plotsyms)
    plotsyms = [];
end

%% Rearrange samples

K = length(labelset);
nums = zeros(1, K);
inds = cell(1, K);

for i = 1 : K    
    inds{i} = find(labels == labelset(i));    
    nums(i) = length(inds{i});
end

inds = horzcat(inds{:});
X = X(:, inds);

%% Plot

if nargout == 0
    if isempty(plotsyms)
        sldrawpts(X, nums, varargin{:});
    else
        sldrawpts(X, nums, plotsyms, varargin{:});
    end
else
    if isempty(plotsyms)
        h = sldrawpts(X, nums, varargin{:});
    else
        h = sldrawpts(X, nums, plotsyms, varargin{:});
    end
end






   

    





Contact us at files@mathworks.com