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

    function [LB, UB,A,c,nlc,alpha]= constraints(m,X,Y,varargin)
%xregUniSpline/CONSTRAINTS - returns parameters for optimisation
%
% [lb, ub,,A,b,nlc,alpha]= constraints(m,X,Y) 

%  Copyright 2000-2007 The MathWorks, Inc. and Ford Global Technologies, Inc.



knots= get(m.mv3xspline,'knots');
Xs= sort(X);

tol = sqrt(eps);
Tgt= gettarget(m,1);
nk= length(knots);
lb= max(Xs(3)*(1+tol),Tgt(1)+tol);
ub= min(Xs(end-2)*(1-tol),Tgt(2)-tol);
% set up order constraints
if nk>1
   % diag and - superdiag for difference constraints
   A= diag(ones(1,nk))-diag(ones(1,nk-1),1);
   % last constraint is lower bound
   A(end+1,1)= -1;
else
   % just upper and lower bounds
   A= [1;-1];
end
% last constraints are upper and lower bounds
c= [-tol*ones(nk-1,1);ub;-lb];

LB=lb(ones(nk,1));
UB=ub(ones(nk,1));


h=diff([-1,sort(knots),1])/(Tgt(2)-Tgt(1));
alpha= -0.1/(sum(log((nk+1)*h)));
if ~isfinite(alpha)
   alpha=-0.1;
end

% number of nonlinear constraints
nlc= 0;