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