generateJacobianFcn
Generate MATLAB Jacobian functions for extended Kalman filter using automatic differentiation
自 R2023a 起
语法
说明
generates the state transition Jacobian function for an extended Kalman filter (EKF) using the automatic differentiation technique.fcnStateJac = generateJacobianFcn(obj,'state',Us1,...,Usn)
This function generates two MATLAB® function files in the current folder:
stateTransitionJacobianFcn.m— The generated state transition Jacobian functionstateTransitionJacobianFcnAD.m— A helper function that uses automatic differentiation to generate the state transition Jacobian function
fcnStateJac is a handle to an anonymous function that calls stateTransitionJacobianFcn.m using the input extendedKalmanFilter object (obj), the additional input arguments passed to the predict function of obj (Us1,...,Usn), and the constants used internally to compute the state transition Jacobian.
To use this Jacobian in the EKF object, specify fcnStateJac in the StateTransitionJacobianFcn property of the object. For example:
obj.StateTransitionJacobianFcn = fcnStateJac;
generates the measurement Jacobian function for an extended Kalman filter (EKF) using the automatic differentiation technique.fcnMeasurementJac = generateJacobianFcn(obj,'measurement',Um1,...,Umn)
This function generates two MATLAB function files in the current folder:
measurementJacobianFcn.m— The generated measurement Jacobian functionmeasurementJacobianFcnAD.m— A helper function that uses automatic differentiation to generate the measurement Jacobian function
fcnMeasurementJac is a handle to an anonymous function that calls measurementJacobianFcn.m using the input extendedKalmanFilter object (obj), the additional input arguments passed to the correct function of obj (Um1,...,Umn), and the constants used internally to compute the measurement Jacobian.
To use this Jacobian in the EKF object, specify fcnMeasurementJac in the MeasurementJacobianFcn property of the object. For example:
obj.MeasurementJacobianFcn = fcnMeasurementJac;
[___, also returns the constants used to compute the Jacobian function. You can return the constants for either Jacobian function.constants] = generateJacobianFcn(___)
示例
输入参数
Output Arguments
Limitations
Automatic differentiation currently supports only a limited set of mathematical operations, which are described in 优化变量和表达式支持的运算 (Optimization Toolbox). If your original state transition or measurement function uses operations or functions that are not in the list, or has if-else statements or loops,
generateJacobianFcnterminates with an error.To generate Jacobian functions, do not preallocate any optimization variable in the original function. For example, suppose you try to generate Jacobians from a function containing the following code.
This code results in the following error.dxdt = zeros(2,1); dxdt(1) = x(1)*x(2); dxdt(2) = x(1)/x(2);
Instead, use this code.Unable to perform assignment because value of type 'optim.problemdef.OptimizationExpression' is not convertible to 'double'.
dxdt = [x(1)*x(2); x(1)/x(2)];
Specifying the state transition and measurement functions in
objas files in the current folder or in a folder on the MATLAB path is recommended. While handles to local functions are supported for Jacobian function generation, they are not supported for generation of C/C++ deployment code. For more information on local functions, see 局部函数.
版本历史记录
在 R2023a 中推出
另请参阅
extendedKalmanFilter | predict | correct | clone | initialize | residual