www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@mdevtestplan/setInputs.m

    function T = setInputs(T,Inputs)
%SETINPUTS set test plan inputs
%    T = setInputs(T,Inputs);
%    setup inputs for test plan. Inputs is a cell array containing
%    mbcinputfactor arrays for each stage. The test plan model is
%    changed to the default model type if the number of inputs is changed.

% Copyright 2007-2015 The MathWorks, Inc.

if ~iscell(Inputs) || ~all(cellfun(@(obj)isa(obj,'mbcinputfactor'),Inputs)) 
    error(message('mbc:mdevtestplan:InvalidArgument', numstages( T )))
end

AllInputs = cat(1,Inputs{:});
% check that labels are valid
AssertValidLabels(AllInputs);

if length(Inputs)~=numstages(T)
    if ~IsMatched(T)
        % change number of stages if necessary
        s = cellfun(@(obj) length(obj),Inputs);
        T = setInputSizes(T,s);
    else
        error(message('mbc:mdevtestplan:InvalidArgument6'))
    end
end

D = T.DesignDev;
OldModel = HSModel(D);

for Stage = 1:length(Inputs)
    dStage= subsref(D,substruct('()',{Stage}));
    m = getModel(dStage);
    nf = length(Inputs{Stage});
    if ~IsMatched(T)
        % can change number of factors
        if nfactors(m)~=nf
            m = MakeDefaultModel(m,Inputs{Stage},Stage);
        else
            m = setInputs(m,Inputs{Stage});
        end
    elseif nfactors(m)==length(Inputs{Stage})
        % can change range NonlinearTransform or Symbol
        OldInputs = getInputs(m);
        for i=1:length(OldInputs)
            if ~strcmp(OldInputs(i).Name,Inputs{Stage}(i).Name)
                error(message('mbc:mdevtestplan:InvalidArgument7'))
            end
        end
        m = setInputs(m,Inputs{Stage});
    else
        % invalid assignment
        error(message('mbc:mdevtestplan:InvalidArgument8'))
        
    end
    dStage= UpdateModels(dStage,m);
    D= subsasgn(D,substruct('()',{Stage}),dStage);
end        

T.DesignDev = D;
NewModel = HSModel(D);

[OK,doRefit]= hasSameInputs(NewModel,OldModel);
if ~OK
    % check for range and symbol change
    T = updateInputs(T,NewModel,doRefit);
end
if ~isnull(address(T))
    xregpointer(T);
end