主要内容

为在线状态估计生成代码MATLAB

你可以从MATLAB生成C / c++代码®代码使用extendedKalmanFilter,unscentedKalmanFilterparticleFilter对象为在线状态估计。C / c++代码生成的使用codegen(MATLAB编码器)命令从MATLAB编码器™软件。使用生成的代码部署嵌入式目标在线估计算法。您还可以通过创建一个独立的应用程序部署在线估计代码使用MATLAB编译器™软件。

生成C / c++代码在线状态估计:

  1. 创建一个函数声明你的过滤器对象持久,并初始化对象。你定义对象之间的持久保持对象状态调用。

    函数[CorrectedX] = ukfcodegen(输出)%声明对象持久化。持续的obj;如果isempty (obj)%初始化对象。obj = unscentedKalmanFilter (@vdpStateFcn、@vdpMeasurementFcn [2; 0]);obj。MeasurementNoise = 0.01;结束%估计美国。CorrectedX =正确(obj,输出);预测(obj);结束

    函数创建一个无味卡尔曼滤波对象为在线状态估计的范德堡尔振荡器有两个州和一个输出。以前写你使用和保存的状态转换和测量功能,vdpStateFcn.mvdpMeasurementFcn.m,并指定初始状态两种状态的值(2,0)。在这里输出测量的输出数据。保存ukfcodegen.m在MATLAB函数路径。或者,您可以为该函数指定完整的路径名。

    ukfcodegen.m初始化函数,持久对象与条件如果isempty (obj)确保对象只初始化一次,第一次调用函数时。后续调用函数只执行预测正确的命令来更新状态估计。在初始化期间,您指定nontunable对象的属性,如StateTransitionFcn(指定ukfcodegen.m作为vdpStateFcn.m),MeasurementFcn(指定ukfcodegen.m作为vdpMeasurementFcn.m)。之后,您可以指定只可调特性。有关更多信息,请参见可调,Nontunable对象属性

    在状态转换和测量功能必须使用支持的命令代码生成。金宝app这些命令的列表,请参阅函数和对象支持C / c++代码生成金宝app(MATLAB编码器)。包括编译指令% # codegen在这些函数表明你打算为函数生成代码。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决违规,将导致错误在代码生成。例如,类型vdpStateFcn.m在命令行中。

  2. 生成C / c++代码,并使用了mex filescodegen(MATLAB编码器)命令从MATLAB编码器软件。

    codegenukfcodegenarg游戏{1}

    的语法args {1}向你的函数中指定参数的一个例子。参数设置维度和函数参数的数据类型输出作为一个双精度标量。

    请注意

    如果你想要一个过滤器与单精度浮点变量,您必须指定的初始值为单精度在对象结构。

    obj = unscentedKalmanFilter (@vdpStateFcn @vdpMeasurementFcn、单([2;0]))

    然后来生成代码,使用以下语法。

    codegenukfcodegenarg游戏{{单(1)}
  3. 使用生成的代码。

    • 使用生成的C / c++代码部署在线状态估计嵌入式目标。

    • 使用生成的MEX-file测试在MATLAB编译的C / c++代码。生成MEX-file也有助于加速模拟状态估计算法在MATLAB。

      负荷估算数据。假设你的数据存储在输出measured_data.mat文件。

      负载measured_data.mat输出

      估计美国通过调用生成的MEX-file。

      i = 1:元素个数(输出)XCorrected = ukfcodegen_mex(输出(i));结束

    这个示例中生成C / c++代码编译MEX-file。为其他目标生成代码,看看codegen(MATLAB编码器)MATLAB编码器文档。

可调,Nontunable对象属性

属性类型 扩展卡尔曼滤波对象 无味卡尔曼滤波对象 粒子滤波对象
可调属性,你可以指定对象构造期间,多次或之后使用点符号 状态,StateCovariance,ProcessNoise,MeasurementNoise 状态,StateCovariance,ProcessNoise,MeasurementNoise,α,β,卡巴 粒子权重
Nontunable属性,你可以指定只有一次,要么在对象构造,之前或之后使用点符号,但使用预测正确的命令 StateTransitionFcn,MeasurementFcn,StateTransitionJacobianFcn,MeasurementJacobianFcn StateTransitionFcnMeasurementFcn StateTransitionFcn,MeasurementLikelihoodFcn,StateEstimationMethod,StateOrientation,ResamplingPolicyResamplingMethod
在对象构造Nontunable属性,您必须指定 HasAdditiveProcessNoiseHasAdditiveMeasurementNoise HasAdditiveProcessNoiseHasAdditiveMeasurementNoise

另请参阅

||

相关的话题