gusucode.com > symbolic工具箱matlab源码程序 > symbolic/@sym/display.m
function display(X,namestr) %#ok<DISPLAY> %DISPLAY Display function for syms. % Copyright 1993-2015 The MathWorks, Inc. % get the correct number of digits to display for symfuns: numbers = regexp(X(1).s, '^_symans_(\d+)', 'tokens'); if ~isempty(numbers) oldDigits = digits(numbers{1}{1}); resetDigits = onCleanup(@() digits(oldDigits)); end Xsym = privResolveArgs(X); X = Xsym{1}; if nargin < 2 namestr = inputname(1); end if isempty(namestr) namestr = 'ans'; end if isa(X,'symfun') vars = argnames(X); cvars = privToCell(vars); cvars = cellfun(@char,cvars,'UniformOutput',false); vars = sprintf('%s, ',cvars{:}); vars(end-1:end)=[]; namestr = [namestr '(' vars ')']; end fX = formula(X); sz = size(fX); if prod(sz) == 0 if isequal(sz,[0,0]) str = getString(message('symbolic:sym:disp:EmptySym')); else by = getString(message('symbolic:sym:disp:by')); parts = arrayfun(@(x){int2str(x)},sz); parts(2,1:length(sz)-1) = {by}; str = [parts{:}]; str = getString(message('symbolic:sym:disp:EmptySymWithSize',str)); end displayVariable(namestr,str); return; end if isempty(fX) || ndims(fX) <= 2 displayVariable(namestr,X,true); else p = size(fX); p = p(3:end); for k = 1:prod(p) sub = privsubsref(X,':',':',k); displayVariable([namestr '(:,:,' int2strnd(k,p) ')'],sub,false); end end % ------------------------ function s = int2strnd(k,p) s = ''; k = k-1; for j = 1:length(p) d = mod(k,p(j)); s = [s int2str(d+1) ',']; %#ok<AGROW> k = (k - d)/p(j); end s(end) = []; function displayVariable(varname,value,novars) if feature('SuppressCommandLineOutput') && sympref('TypesetOutput') && isa(value, 'sym') createMathML(value); matlab.internal.language.signalVariableDisplay(value,varname); else loose = isequal(get(0,'FormatSpacing'),'loose'); if loose, disp(' '), end disp([varname ' =']); if loose, disp(' '), end if nargin < 3 disp(value) if loose, disp(' '), end else disp(value,novars) end end