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]);