www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbccrosssectiongui/MBCModelInterface.m
classdef MBCModelInterface < mbccrosssectiongui.AbstractMBCModelInterface %mbccrosssection.MBCModelInterface Class that interfaces with MBC Models % to evaluate models and boundaries % Copyright 2015 The MathWorks, Inc. methods function [rLower,rUpper,rDist] = getRange(~,model) %getRange Get the range of models % Uses the first model if iscell(model) model = model{1}; end [rLower,rUpper,rDist] = range(model); end function [modelVal, upperBound, lowerBound] = evaluateModelAt(~,currModel,inputValuesCell,alpha) %evaluateModelAt Evaluates a model at some values if nargin == 4 && canCalculatePEV(currModel) [PE,~,~,modelVal]= pevgrid(currModel,inputValuesCell); modelVal = modelVal(:); p = sqrt(PE(:)); ni = calculateNI(currModel,alpha); upperBound = modelVal+ni*p; lowerBound = modelVal-ni*p; else modelVal = GenTable(currModel,inputValuesCell); modelVal = modelVal(:); upperBound = []; lowerBound = []; end end function constraintVals = evaluateConstraintAt(~,boundary,xcurrent) %evaluateConstraintAt Evaluates a constraint for some values constraintVals = constraintDistanceGrid(boundary,xcurrent); constraintVals = constraintVals(:); end end end function ni = calculateNI(model,alpha) degFree1=dferror(model); if ~isfinite(degFree1) degFree1= Inf; ni1 = norminv(alpha); else ni1 = tinv(alpha,degFree1); end degFree= dferror(model); if degFree~=degFree1 if ~isfinite(degFree) ni = norminv(alpha); else ni = tinv(alpha,degFree); end else ni=ni1; end end function canPEV = canCalculatePEV(model) canPEV = pevcheck(model); end