www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@mbcinputfactor/copyToInternal.m

    function varargout = copyToInternal(obj,varargin)
%COPYTOINTERNAL
%
% varargout = copyToInternal(obj,varargin)

%  Copyright 2007 The MathWorks, Inc. 

n = length(varargin);

varargout = varargin;
Args = varargin;
for i=1:length(obj)
    for j=1:n
        Args{j} = varargin{j}(i);
    end
    [Args{:}] = copyToInternalRanges(obj(i),Args{:});
    for j=1:n
        varargout{j}(i)= Args{j};
    end
end


function varargout = copyToInternalRanges(obj,varargin)
%COPYTOINTERNALRANGES
%
% varargout = copyToInternalRanges(obj,varargin)

%  Copyright 2007 The MathWorks, Inc. 

n = length(varargin);
varargout = varargin;


c1 = varargin{1};
IsSame = true;
SameTgt = true;
for j=2:n
    cj = varargin{j};
    IsSame = IsSame && IsSameCoding(c1,cj);
    SameTgt = IsSame && SameTgt && isequal(c1.RealTarget,cj.RealTarget);
end

if SameTgt
    % copy target to range
    for j=1:n
        cout = varargin{j};
        % use target from outer model if outer model has finite target
        % otherwise use internal target
        CopyTarget = all(isfinite(obj.Target));
        cout= copyinputs(cout,obj,CopyTarget);
        varargout{j}= cout;
    end
else
    % no change to internal models
    for j=1:n
        cout = varargin{j};
        if IsSame && ~isempty(obj.NonlinearTransform)
            cout.NonlinearTransform = obj.NonlinearTransform;
        end
        varargout{j} = cout;
    end
end