📄 fdnt.m
字号:
% fdnt.m
% Scope: This MATLAB macro determines a fault detection normalized threshold
% used in the Receiver Autonomous Integrity Monitoring (RAIM)
% computation, for specified false alarm and degree of freedom.
% Usage: xoutput = fdnt(fa_tol)
% Description of parameters:
% dof - input, degrees-of-freedom for chi-square distribution,
% in this case is the number of satellites available - 4,
% global variable
% fa_tol - input, false alarm tolerance
% xoutput - output, fault detection normalized threshold
% References:
% [1] Brown, A. K., Sturza, M. A., The effect of geometry on
% integrity monitoring performance. The Institute of Navigation
% 46th Annual Meeting, June 1990, pp. 121-129.
% [2] Brown, R. G., A baseline RAIM scheme and a note on the
% equivalence of three RAIM methods. Proceedings of the National
% Technical Meeting, Institute of Navigation, San Diego, CA,
% Jan. 27-29, 1992, pp. 127-137.
% External Matlab macros used: chi2_dof, gauss_1
% Remark: When the degree of freedom is 1 a Gaussian distribution is used,
% otherwise a chi-square distribution is assumed.
% Last update: 01/05/00
% Copyright (C) 1997-00 by LL Consulting. All Rights Reserved.
function xoutput = fdnt(fa_tol)
global dof
if ( (dof < 1) | (fa_tol < 0) | (fa_tol > 1) )
error('Error 1 - FDNT ; check the input data values');
end
fa_tol_c = 1.0 - fa_tol;
% Compute the integral of the probability density function
options = odeset('RelTol',1.e-13,'AbsTol',1.e-13);
if dof == 1 % Gaussian distribution
[x,y] = ode45('gauss_1',[0. 100.],0.,options);
fa_tol_c = 0.5 * fa_tol_c;
elseif dof == 2 % direct computation
xoutput = sqrt(-2.0*log(fa_tol));
return
elseif (dof > 2)
[x,y] = ode45('chi2_dof',[0. 100.],0.,options);
end
% Determine the index for the upper limit of the integration
for i = 1:size(y),
if (y(i) > fa_tol_c)
break
end
end
if (i == length(y))
error('Error 2 - FDNT ; insufficient integration interval');
end
% Execute linear interpolation to determine the integral upper limit
xoutput = x(i-1) + (x(i) - x(i-1)) * (fa_tol_c - y(i-1)) / (y(i) - y(i-1));
if dof == 1
return
end
xoutput = sqrt(xoutput);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -