Matlab编码器:如何实现一个追踪分离函数初始化和预测/更新吗?

3视图(30天)
本教程”如何生成C代码跟踪”实现了跟踪器作为一个函数与一个持久性变量。
我的问题是,我想从一个配置文件传递参数的初始化,并预测只能预测具体时间没有检测融合,但我宁愿像避免传递初始化参数和一些空的检测来预测每个调用。有一些基础设施,这将允许我保持坚持不懈的追踪和一些与之交互的函数没有incompatiblity处理类的问题。
谢谢!

答案(1)

兰德Kivelevitch
兰德Kivelevitch 2021年8月26日
简短的答案是——而不是直接。当您生成代码时,您不能通过处理类或从顶级类,这意味着你不能与对象以外的顶级类。
几件事你可以试着看看他们帮助得到你想要的,即使是在一个不同的方式。
首先,你可以确保你设置假的跟踪检测,完全准备好任何调用,即使你没有发现下一个电话。这样做:
函数outTracks = tracker_kernel(检测时间)
持续的跟踪器
如果isempty(跟踪)
追踪=%定义任何你想定义跟踪
%确定定义检测在相同的格式
%输入你希望得到检测
dummyDetection =%的任何
设置(追踪dummyDetection 0);
重置(跟踪);
%之后,跟踪锁定,完全定义
结束
outTracks =追踪(检测、时间);
第二件事 可能 工作,但我不确定是否会是添加一个输入定义您想调用方法:
函数outTracks = tracker_kernel(方法、检测时间)
持续的跟踪器
如果isempty(跟踪)
追踪=%定义任何你想定义跟踪
%确定定义检测在相同的格式
%输入你希望得到检测
dummyDetection =%的任何
设置(追踪dummyDetection 0);
重置(跟踪);
%之后,跟踪锁定,完全定义
结束
开关低(方法)
情况下“步骤”
通常的步骤调用%
outTracks =追踪(检测、时间);
情况下“预测”
%注意,你仍然必须通过空检测细胞
%第二输入参数为这个工作尽管它不是
%预测所使用的调用。你不能改变输入参数
编译后%。
outTracks = predictTracksToTime(追踪,“所有”、时间);
否则
%这将让程序员知道没关系不要设置outTracks当
%以上的方法名不是一个选项。没关系,因为
%编码器将不知道期望outTracks在这种情况下
断言(假)
结束
请注意:我没有原型,所以它可能会或可能不会工作。我会很感激如果你可以让我知道如果那样工作。
2的评论
兰德Kivelevitch
兰德Kivelevitch 2021年8月26日
我认为,更大的问题是为什么要重新启动过滤器已经建立和跟踪运行期间每一步?那听起来不像一个好主意。
如果您想尝试各种设置的值为每个运行整个运行(但使用相同的值),我建议使用过滤器的初始化函数。你可以做这样的事:
函数imm = myIMMInitFcn(检测)
%的第一个参数从XML文件保存到常规垫文件
params = coder.load (“myFileName.mat”);
%初始化您的IMM你总是一样。例如,使用
% initekfimm。
imm = initekfimm(检测);
imm。TransitionProbabilities = params.TransitionProbabilities;
结束
如果你想修改过滤器属性每一步,然后有一个繁琐的方法。在上面的顶级追踪的功能中,您可以添加一个“重新启动”的情况下,你将再次从文件加载参数,然后设置过滤器属性。它会看起来像:
函数outTracks = tracker_kernel(方法、检测时间)
持续的跟踪器
如果isempty(跟踪)
追踪=%定义任何你想定义跟踪
%确定定义检测在相同的格式
%输入你希望得到检测
dummyDetection =%的任何
设置(追踪dummyDetection 0);
重置(跟踪);
%之后,跟踪锁定,完全定义
结束
开关低(方法)
情况下“步骤”
通常的步骤调用%
outTracks =追踪(检测、时间);
情况下“预测”
%注意,你仍然必须通过空检测细胞
%第二输入参数为这个工作尽管它不是
%预测所使用的调用。你不能改变输入参数
编译后%。
outTracks = predictTracksToTime(追踪,“所有”、时间);
情况下“重新启动”
%这里你从垫文件加载参数。
% Aletrnatively,您可以通过它们作为一个四输入参数
%你需要定义和生成代码的函数
%,允许。
params = coder.load (“myFileName”);
%你需要找到所有的跟踪维护和跟踪
%然后设置每一个滤波器的新参数。“简单”
%的方法是预测追踪的时间之前的追踪
%的电话。记得要传递一个空检测细胞顶部的水平
%的功能。
outTracks = predictTracksToTime(追踪,“所有”、时间);
%可以设置公开可设置的属性的值
%过滤但你必须为每个跟踪一个接一个。注意:
%这不会影响时,初始化一个新的过滤器
在下一步%检测未赋值的。影响,你
%将需要修改滤波器的初始化函数。
i = 1:元素个数(outTracks)
setTrackFilterProperties(追踪outTracks .TrackID(我),
“Prop1”params.Prop1,“Prop2”,params.Prop2);
结束
否则
%这将让程序员知道没关系不要设置outTracks当
%以上的方法名不是一个选项。没关系,因为
%编码器将不知道期望outTracks在这种情况下
断言(假)
结束
和之前一样,这完全是假设和unvetted。请确保它是有效的。

登录置评。

社区寻宝

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

开始狩猎!