www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@mbcinputfactor/copyToExternal.m
function [objOut,varargout] = copyToExternal(obj,varargin) %COPYTOEXTERNAL % % [obj,varargout] = copyToExternal(obj,varargin) % Copyright 2007 The MathWorks, Inc. n = length(varargin); varargout = varargin; Args = varargin; objOut= varargin{1}; for i=1:length(obj) for j=1:n Args{j} = varargin{j}(i); end [objOut(i),Args{:}] = copyToExternalRanges(objOut(i),Args{:}); for j=1:n varargout{j}(i) = Args{j}; end end function [obj,varargout] = copyToExternalRanges(obj,varargin) %COPYTOEXTERNALRANGES % % [obj,varargout] = copyToExternalRanges(obj,varargin) % Copyright 2007 The MathWorks, Inc. n = length(varargin); varargout = varargin; IsSame = true; SameTarget = true; C1 = varargin{1}; [R,g] = getcode(C1); Tgt = C1.RealTarget; for j=2:n Cj = varargin{j}; IsSame = IsSame && isequal(C1,Cj) ; SameTarget= IsSame && SameTarget && isequal(Tgt,Cj.RealTarget); Rj = Cj.Range; % make common range R(:,1) = min(R(:,1),Rj(:,1)); R(:,2) = max(R(:,2),Rj(:,2)); end if SameTarget % all input transforms done at the outer level obj= setcode(obj,R,g,C1.Target); % all input transforms done at internal cout = setcode(obj,Tgt,''); varargout(:) = {cout}; elseif IsSame % external input uses common range and nonlinear transform is done at outer level obj = setcode(obj,R,g,[-Inf Inf]); for j=1:n cout = varargin{j}; cout.NonlinearTransform = ''; varargout{j} = cout; end else obj = setcode(obj,R,'',[-Inf Inf]); end