0001 function h = sldrawlabeledpts(X, labels, labelset, plotsyms, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 if nargin < 2
0046 raise_lackinput('sldrawlabeledpts', 2);
0047 end
0048
0049 if ~isnumeric(X) || ndims(X) ~= 2
0050 error('sltoolbox:invalidarg', ...
0051 'X should be a 2D numeric matrix');
0052 end
0053
0054 n = size(X, 2);
0055
0056 if ~isequal(size(labels), [1 n])
0057 error('sltoolbox:sizmismatch', ...
0058 'The labels should be a 1 x n row vector');
0059 end
0060
0061 if nargin < 3 || isempty(labelset)
0062 labelset = unique(labels);
0063 end
0064
0065 if nargin < 4 || isempty(plotsyms)
0066 plotsyms = [];
0067 end
0068
0069
0070
0071 K = length(labelset);
0072 nums = zeros(1, K);
0073 inds = cell(1, K);
0074
0075 for i = 1 : K
0076 inds{i} = find(labels == labelset(i));
0077 nums(i) = length(inds{i});
0078 end
0079
0080 inds = horzcat(inds{:});
0081 X = X(:, inds);
0082
0083
0084
0085 if nargout == 0
0086 if isempty(plotsyms)
0087 sldrawpts(X, nums, varargin{:});
0088 else
0089 sldrawpts(X, nums, plotsyms, varargin{:});
0090 end
0091 else
0092 if isempty(plotsyms)
0093 h = sldrawpts(X, nums, varargin{:});
0094 else
0095 h = sldrawpts(X, nums, plotsyms, varargin{:});
0096 end
0097 end
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111