是近邻函数支持模型实时?万博1manbetx万博1manbetx

2视图(30天)
跟进:https://de.mathworks.com/matlabcentral/answers/584957-are-point-cloud-functions-supported-on万博1manbetx-simulink-rea万博1manbetxltime?s_tid=mlc_ans_email_view
所以我试着用kdtree + knnsearch模型实时(Matlab 2018 b万博1manbetx)
我创建了一个Matlab仿真软件内部功能块,然后调用。万博1manbetx
kd = KDTreeSearcher ([0 1 2; 10 10 10]);
idx = knnsearch (kd, [[0, 0, 0]]);
它会导致:“不能叫保护成员‘stats.coder.searcher.KDTreeSearcher.KDTreeSearcher’。”
如果我使用createns (X),而不是KDTreeSearcher = > 函数“createns”不支持代码生成。万博1manbetx
还有其他空间部分树木,支持代码生成?万博1manbetx喜欢八叉树吗?
knnsearch本身似乎是兼容slrt c代码生成。如。
idx = knnsearch ([0 1 2; 10 10 10], [[0, 0, 0]]);
但我认为这不会使用任何空间分区树,对吗?最近的邻居搜索就天真的实现?
根据 https://de.mathworks.com/help/stats/code-generation-for-nearest-neighbor-searcher.html 缝,你可以节省pretrained KDTree然后搜索它部署到目标后,但这并没有帮助我用例(生活动态点云处理)。
1评论
江丰刘
江丰刘 2021年4月17日
你好,我试着和你同样的事情。它的工作原理却非常缓慢。你有什么想法吗?谢谢!

登录置评。

答案(1)

哈米德Satarboroujeni
哈米德Satarboroujeni 2020年9月3日
编辑:哈米德Satarboroujeni 2020年9月3日
如果您想使用knnsearch KDTreeSearcher对象在MATLAB功能块的方法,你必须遵循代码生成工作流:
简单地说,
1 -在MATLAB中创建KDTreeSearcher对象:
kd = KDTreeSearcher ([0 1 2; 10 10 10]);
2 -保存的代码生成版本对象MAT-file:
saveLearnerForCoder (kd,“searcherModel”)
3 -在MATLAB函数块创建一个入口点函数加载已保存的对象,并调用knnsesarch方法:
函数idx = myknnsearch1 (Y)% # codegen
Mdl = loadLearnerForCoder (“searcherModel”);
idx = knnsearch (Mdl Y);
结束
你应该能够运行模拟和生成C / c++代码。
正如你指出的那样,你也可以选择使用knnsearch函数,但确保kdtree搜索对象用于指定NSMethod名称-值对:
idx = knnsearch ([0 1 2; 10 10 10], [[0, 0, 0]],“NSMethod”,“kdtree”);
我希望这回答了你的问题。
2的评论
哈米德Satarboroujeni
哈米德Satarboroujeni 2020年9月4日
编辑:哈米德Satarboroujeni 2020年9月8日
如果你使用knnsearch 方法 你不能动态地构建kdtree。但是如果你使用knnsearch 函数 kdtree将建立在飞。它生成的代码 createns 并使用它在运行时创建kdtree。
knnsearch函数的代码生成功能和限制在这里列出:

登录置评。