gusucode.com > symbolic工具箱matlab源码程序 > symbolic/@sym/subexpr.m
function [Y,sigma] = subexpr(X,signame) %SUBEXPR Rewrite in terms of common subexpressions. % [Y,SIGMA] = SUBEXPR(X) or [Y,SIGMA] = SUBEXPR(X,'SIGMA') % rewrites the symbolic expression X in terms of a common % subexpression. % % Example: % syms a b c d x % t = solve(a*x^3+b*x^2+c*x == 0, x); % [r,s] = subexpr(t,'s'); % % See also SYM/PRETTY, SYM/SUBS. % Copyright 1993-2016 The MathWorks, Inc. % Get name of subexpression matrix if nargin == 1 signame = 'sigma'; elseif isa(signame,'sym') && isvarname(char(signame)) signame = char(signame); elseif ~ischar(signame) signame = inputname(2); if isempty(signame) error(message('symbolic:subexpr:NoName')); end end X = privResolveArgs(X); X = X{1}; if ismember(sym(signame),symvar(X)) error(message('symbolic:subexpr:DuplicateName',signame)); end [Y,sigma] = mupadmexnout('symobj::subexpr',X,signame); if strcmp(char(sigma),'#NULL') sigma = sym([]); end if (nargout < 2) && ~isempty(sigma) assignin('caller',signame,sigma); loose = strcmp(get(0,'formatspacing'),'loose'); if loose, disp(' '); end disp([signame,' = ']); if loose, disp(' '); end disp(sigma); if loose, disp(' '); end end