您可以从MATLAB生成C / C ++代码®使用的代码ExtendedKalmanFilter.
那undentedkalmanfilter
和粒子滤片
在线状态估计的对象。使用C / C ++代码使用Codegen.
(MATLAB编码器)命令从Matlab Coder™软件。使用生成的代码将在线估计算法部署到嵌入目标。您还可以通过使用独立应用程序进行部署在线估计代码Matlab Compiler™软件。
要生成在线状态估计的C / C ++代码:
创建一个函数以将筛选物对象视为持久性,并初始化对象。您将对象定义为持久以维护呼叫之间的对象状态。
功能[纠正x] = UKFCoDegen(输出)%declare对象作为持久性。执着的obj;如果isempty(obj)%初始化对象。obj = UnscentedkalmanFilter(@ vdpstatefcn,@ vdpmeasurementfcn,[2; 0]);obj.measurementnoise = 0.01;结尾%估计各国。纠正x =正确(OBJ,输出);预测(obj);结尾
该函数创建一个具有两个状态和一个输出的VAN DER POL振荡器的在线状态估计的UNSCENTED的卡尔曼滤波器对象。您使用先前写入和保存的状态转换和测量功能,vdpstatefcn.m.
和vdpmeasurementfcn.m.
,并指定两个状态的初始状态值[2; 0]
。这里输出
是测量的输出数据。拯救Ukfcodegen.m.
Matlab路径上的功能。或者,您可以为此函数指定完整路径名。
在里面Ukfcodegen.m.
函数,持久对象是初始化的条件如果是谬误(obj)
要确保仅在第一次调用函数时才初始化对象。后续调用该函数仅执行预测
和正确的
命令以更新状态估计。在初始化期间,您可以指定对象的未填充属性,例如StateTransitionFCN.
(指定的Ukfcodegen.m.
作为vdpstatefcn.m.
) 和MeasurementFCN.
(指定的Ukfcodegen.m.
作为vdpmeasurementfcn.m.
)。之后,您只能指定可调谐属性。有关更多信息,请参阅可调谐和非全部对象属性。
在状态转换和测量功能中,您必须仅使用支持代码生成的命令。金宝app有关这些命令的列表,请参阅C / C ++代码生成支持的函数和对象金宝app(MATLAB编码器)。包括汇编指令%#codegen.
在这些函数中,表示您打算为函数生成代码。添加此指令指示MATLAB代码分析仪帮助您诊断和修复将在代码生成中导致错误的违规。例如,类型vdpstatefcn.m.
在命令行。
使用C / C ++代码和MEX文件使用Codegen.
(MATLAB编码器)命令从Matlab编码器软件。
Codegen.Ukfcodegen.- args.{1}
语法-args {1}
指定函数的参数的示例。该参数设置函数参数的尺寸和数据类型输出
作为双重精度标量。
笔记
如果希望具有单精度浮点变量的过滤器,则必须在对象构造期间将状态的初始值指定为单精度。
obj = UnscentedkalmanFilter(@ vdpstatefcn,@ vdpmeasurementfcn,单个([2; 0]))
然后要生成代码,请使用以下语法。
Codegen.Ukfcodegen.- args.{{单(1)}
使用生成的代码。
使用生成的C / C ++代码将在线状态估计部署到嵌入目标。
使用生成的MEX文件用于在MATLAB中测试编译的C / C ++代码。生成的MEX文件也可用于加速MATLAB中的状态估计算法的模拟。
加载估计数据。假设您的输出数据存储在测量_data.mat.
文件。
加载测量_data.mat.输出
通过调用生成的MEX文件来估算状态。
为了i = 1:numel(输出)xcorrited = ukfcodegen_mex(输出(i));结尾
此示例生成用于编译MEX文件的C / C ++代码。要为其他目标生成代码,请参阅Codegen.
(MATLAB编码器)在里面Matlab编码器文档。
财产种类 | 扩展卡尔曼过滤器对象 | Unscented Kalman筛选对象 | 粒子过滤器对象 |
---|---|---|---|
可调谐属性,您可以在对象结构期间或使用点表示法以后指定多次的属性 | 状态 那StateCovariance. 那processnoise. , 和测量管理 |
状态 那StateCovariance. 那processnoise. 那测量管理 那Α 那bet , 和kappa. |
粒子 和重量 |
您可以仅在对象构造期间或之后使用点表示法,但在使用之前预测 或者正确的 命令 |
StateTransitionFCN. 那MeasurementFCN. 那StateTransitionJacobianfcn. , 和测量jacobianfcn. |
StateTransitionFCN. 和MeasurementFCN. |
StateTransitionFCN. 那MeasurementLikelihoodfcn. 那最终于司法方法 那陈辞 那重新采样策划 和重新制动方法 |
您必须在对象构造期间指定的难度属性 | HasaddittyProcessnoise. 和hasadditivemeasurementnoise. |
HasaddittyProcessnoise. 和hasadditivemeasurementnoise. |
ExtendedKalmanFilter.
|粒子滤片
|undentedkalmanfilter