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

    function varargout = shareConstraints(varargin)
%shareConstraints share constraints between models
%    [m1,m2,...,mn]= shareConstraints(m1,m2,...,mn)
%    Constraints are shared between models using boundaryModelWrappers if they have the same inputs.
%    Care should be taken when calling this function to ensure that constraints should really be
%    shared. For example, if the models are all from the same test plan or composite models are
%    created from the same mbcmodel project.

%   Copyright 2011 The MathWorks, Inc. and Ford Global Technologies, Inc.

shared = iConstraintInfo(varargin{1});
varargout = varargin;

varargout{1}.constraints = shared.constraints;


for i=2:nargin
    m = varargin{i};
    si = iConstraintInfo(m);
    % find constraints with the same inputs
    Found =  cellfun( @(shared) isequal(si.symbols,shared) ,{shared.symbols});
    if any(Found)
        % copy shared constraints
        m.constraints = shared(Found).constraints;
        varargout{i}= m;
    else
        % different model - add new constraints
        shared = [shared si];
    end
end


function s = iConstraintInfo(m)

s.constraints = m.constraints;
if isa(s.constraints,'conbase')
    % make boundary model wrapper to share constraints
    s.constraints = boundaryModelWrapper(s.constraints);
end
s.symbols = m.symbols;