getalp.m

来自「kalman filter update equations implement」· M 代码 · 共 52 行

M
52
字号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% getalp.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [alp,lba,uba,ier]=getalp(alpu,alpo,gTp,pTGp);% get minimizer alp in [alpu,alpo] for a univariate quadratic%	q(alp)=alp*gTp+0.5*alp^2*pTGp% lba	lower bound active% uba	upper bound active%% ier	 0 (finite minimizer) %	 1 (unbounded minimum)%function [alp,lba,uba,ier]=getalp(alpu,alpo,gTp,pTGp);lba=0;uba=0;% determine unboundednessier=0;if alpu==-inf & ( pTGp<0 | (pTGp==0 & gTp>0) ),  ier=1; lba=1;end;if alpo==inf & (pTGp<0 | (pTGp==0 & gTp<0) ),  ier=1; uba=1; end;if ier, alp=NaN; return; end;       % determine activityif pTGp==0 & gTp==0,   alp=0;elseif pTGp<=0,  % concave case minimal at a bound  if alpu==-inf,     lba=0;  elseif alpo== inf, lba=1;  else               lba = (2*gTp+(alpu+alpo)*pTGp>0);   end;  uba = ~lba;else  alp=-gTp/pTGp;          % unconstrained optimal step  lba = (alp <= alpu);    % lower bound active  uba = (alp >= alpo);    % upper bound activeend;if lba, alp=alpu; end;if uba, alp=alpo; end;    % print?if abs(alp)==inf, gTp,pTGp,alpu,alpo,alp,lba,uba,ier, end;   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?