www.gusucode.com > mbcview 工具箱matlab源码程序 > mbcview/@cgtools/@lookup1editor/update.m
function update(obj) %UPDATE Called when table data has changed % % UPDATE(OBJ) is called to update the display after the object has been % changed. % Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc. if isempty(obj.TablePtr) || isnull(obj.TablePtr) || isempty(obj.TablePtr.info) xName = ''; v = []; breakpoints = []; locks = []; extrap = []; region = []; else tbl = obj.TablePtr.info; % Values v = get(tbl, 'values'); v = v(:); % Breakpoints if obj.HasNormaliser pNorm = get(tbl, 'x'); norm = pNorm.info; pInput = get(norm, 'x'); N = length(v); breakpoints = invert(norm, (0:N-1)'); else breakpoints = get(tbl, 'breakpoints'); pInput = get(tbl, 'x'); end % Input name. If the immediate input to the table is a source, use % it's name. Otherwise use a generic "Breakpoints" label. if pInput.issource xName = pInput.getname; else xName = 'Breakpoints'; end % Value locks locks = logical(get(tbl, 'vlocks')); if isempty(locks) locks = false(size(v)); end % extrapolation mask extrap = getExtrapolationMask(tbl); region = getExtrapolationRegions(tbl); end % Start table update if isempty(v) obj.Table.Peer.clearTable; Selected = zeros(0,2); else old_sel = obj.Table.getSelectedRegions; obj.Table.Peer.setTableData(v, getname(tbl), breakpoints, locks, extrap, region); obj.Table.Peer.setCornerString(xName); for n = 1:size(old_sel, 1) obj.Table.addSelectedRegion(old_sel{n,1}(1), ... old_sel{n,2}(1), ... old_sel{n,1}(2)-old_sel{n,1}(1)+1, ... old_sel{n,2}(2)-old_sel{n,2}(1)+1); end Selected = obj.Table.getSelectedRows; end % Update graph obj.Dragger.setTableData(breakpoints, v, locks,Selected); set(obj.Axes, 'XLim', mbcmakelimits(breakpoints), ... 'YLim', mbcmakelimits(v, 'loose'),'XTick',tickCalculation(breakpoints)); mbcxlabel(obj.Axes, xName); function x = tickCalculation(x) x = unique(x); while length(x)>12 if mod(length(x),2) == 1 % odd length x = x(1:2:end); else % include end breakpoint x = [x(1:2:end-1);x(end)]; end end