📄 gmm_derivative.m
字号:
function J = gmm_derivative(g, s, numerical)
%function J = gmm_derivative(g, s, numerical)
%
% INPUTS:
% g - gmm
% s - set of N samples from the domain of g
% numerical - if 1 then compute Jacobians via numerical approximation,
% else the default is an analytical solution.
%
% OUTPUT:
% J - Jacobian of g with respect to s. The i-th row of J is dg/ds(:,i),
% such that J is (N x D), where D is the gmm domain dimension.
%
% REFERENCES:
% Ridley, M.F., Generalised Bayesian Estimation for Decentralised Sensor
% Networks, University of Sydney, Australian Centre for Field
% Robotics, 2005.
% Williams, J.L., Gaussian Mixture Reduction for Tracking Multiple
% Maneuvering Targets in Clutter, Masters thesis, Air Force Institute
% of Technology, Wright-Patterson Air Force Base, 2003.
%
% Compute the Jacobian dg/ds at each point s.
%
% Tim Bailey 2006.
if nargin == 2, numerical = 0; end
[D,N] = size(s);
if numerical ~= 1
% Analytical Jacobian as described in Ridley, p169, and Williams, p3-29
J = zeros(N,D);
for i=1:length(g.w)
v = s - repvec(g.x(:,i), N);
w = gauss_evaluate(v, g.P(:,:,i));
J = J - g.w(i) * v' * inv(g.P(:,:,i)) .* repvec(w(:), D);
end
else
% Numerical Jacobian approximation
for i=1:N
J(i,:) = numerical_Jacobian(s(:,i), @jacmodel, [], [], g);
end
end
%
%
function f = jacmodel(s, g)
f = gmm_evaluate(g, s);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -