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

    function pr_factorsort(gr)
%PR_FACTORSORT   Private function
%
%   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 = gr.DataPointer.info;
data = ud.data;
sd=size(data,2);
factors = ud.factors;
labels = get(gr.xfactor,'String');
if iscell(labels)
   labels=labels{1};
end

if isempty(factors)
   factors={};
end

% get current factor selection values
vals=get([gr.xfactor;gr.yfactor;gr.zfactor;gr.cfactor],{'Value'});

% check values
vals=cat(1,vals{:});
if strcmp(labels,' ') && all(vals==1)
   % assume a new-graph case: initialise factor numbers sequentially
   vals(:)=sd;
   vals(1:sd)=1:sd;
   vals=vals(1:4);
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
lbls=repmat({lbls},[4 1]);
set([gr.xfactor;gr.yfactor;gr.zfactor;gr.cfactor],{'String','Value'},[lbls,vals]);