trackingPF传感器融合和跟踪工具,如何使用自定义测量函数作为函数返回处理?

3视图(30天)
我的目标是指定一个自定义测量功能跟踪粒子滤波(trackingPF)传感器融合和跟踪工具包。我可以通过直接引用一个自定义函数,但我得到一个错误当试图做同样的事情,从另一个函数返回一个函数处理。
这是直接的方法。
% #好< * NASGU >
priorState = 0 (4,1);% position_x、velocity_x position_y velocity_y
%指定一个粒子滤波与customMeasurementFcn直接指定。
pf_direct = trackingPF (@constvel @customMeasurementFcn priorState)
预测=预测(pf_direct)
后=正确(pf_direct 45)
好到目前为止。现在尝试相同的函数处理返回另一个函数。
customMeasurementFcn_returnedHandle = generateMeasurementFunction
pf_handle = trackingPF (@constvel @customMeasurementFcn_returnedHandle priorState)
预测=预测(pf_handle)
后=正确(pf_handle 45)
正确的()调用失败……
%的错误使用输入参数个数
% customMeasurementFcn_returnedHandle函数不存在。
%
% trackingPF误差/ validateMeasurementFcn(第1114行)
% narginActual =输入参数个数(PF.MeasurementFcn);
%
% trackingPF误差/ validateMeasurementRelatedProperties(第726行)
% validateMeasurementFcn (PF, z n funcName,变长度输入宗量{:});
%
% trackingPF误差/正确(第309行)
% validateMeasurementRelatedProperties (PF, z,‘正确的’,变长度输入宗量{:});
矛盾的误差,测量函数处理过滤器看起来正确的…
pf_handle.MeasurementFcn
% ans =
% @customMeasurementFcn_returnedHandle
我可以使用自己处理……
customMeasurementFcn_returnedHandle (pf_handle.Particles (:, 1:10))
% ans = 1×10
% 1.8973 -135.1443 62.1872 118.7292 -127.2712 164.5253 -56.4507 131.4280 40.8487 -52.8114
但同样的调用使用粒子滤波的处理存储在对象失败。
pf_handle.MeasurementFcn (pf_handle.Particles (10):,)
%识别customMeasurementFcn_returnedHandle的函数或变量。
这是函数定义。
函数变长度输入宗量predictedParticles = customMeasurementFcn(颗粒)
fullMeasurement = cvmeas(粒子,“球”);%方位角、仰角、范围、范围
:predictedParticles = fullMeasurement (1) + randn(1、大小(粒子,2));%方位加噪声
结束
函数generatedMeasurementFunction = generateMeasurementFunction ()
%这里会发生其他功能定制。
generatedMeasurementFunction = @customMeasurementFcn;
结束
你能教我如何使用一个函数处理回来generateMeasurementFunction()的MeasurementFcn trackingPF吗?

接受的答案

Prashant Arora
Prashant Arora 2021年11月12日
嗨,马克,
似乎 customMeasurementFcn_returnedHandle 已经是一个函数处理。
“@customMeasurementFcn_returnedHandle” 声明一个处理函数命名 customMeasurementFcn_returnedHandle 。这个函数不存在,你得到一个错误。你应该使用变量 customMeasurementFcn_returnedHandle 本身,因为它已经是处理所需的功能。
你应该定义你 trackingPF (没有@ customMeasurmentFcn_returnedHandle)
pf_handle = trackingPF (@constvel customMeasurementFcn_returnedHandle priorState)
希望这个有帮助。
Prashant

更多的答案(0)

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!