www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mvgraph1d/private/pr_factorsort.m

    function pr_factorsort(gr)
%PR_FACTORSORT
%
%   Private function for sorting out any mismatch between data length and
%   number of given factors

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.


ud = get(gr.axes, 'UserData');
sd=size(ud.Data,2);

factors=ud.Labels;
labels=get(gr.factorsel,'String');
if iscell(labels)
    labels=labels{1};
end

if isempty(factors)
    factors={};
end

% get current factor selection values
vals=get(gr.factorsel,'Value');

% check values
if strcmp(labels,' ') && vals==1
    % assume a new-graph case: initialise factor numbers sequentially
    % not needed in a 1D case
else
    vals(vals>sd)=sd;
end
vals = max(vals, 1);
vals = num2cell(vals);

% sort out labels to match data
if sd==0
    lbls = {' '};
elseif length(factors)>=sd
    lbls = factors(1:sd);
elseif length(factors)<sd
    lbls = cellstr([repmat('col',sd,1) num2str((1:sd)')]);
    lbls(1:length(factors)) = factors;
end
set(gr.factorsel,{'String','Value'},[{lbls},vals]);