【发布时间】:2016-05-29 17:40:05
【问题描述】:
我有一个正在编写为 MATLAB mex 文件的函数。此函数必须使用 MEX,因为它与 C++ 中的一个硬件接口。有很多选项可以设置,我想使用containers.Map 来传递它们。 (否则,我需要大量的函数参数。)
我看不到任何方法可以访问使用键检索值的 Map 运算符。我尝试使用mexCallMATLAB,但我的各种方法都失败了。有没有办法做到这一点?
我想也许 Map 使用 subsref 实现了这个运算符,但这在 MATLAB 中失败了,所以我猜测 mex 文件中的等价物也会失败:
dict = containers.Map('foo', 3)
subsref(dict, struct('type', '.', 'subs', 'foo'))
【问题讨论】:
-
你可以只使用一个结构吗?然后就可以使用
mxGetField等相关功能了。 -
也许 - 我现在正在调查。
-
是的 - 这对我有用。谢谢!不过,我想我会保留这个问题,因为有人可能仍然想要关于地图的答案。
-
太棒了。如果您编辑您的问题以提供一个您正在尝试做的最小示例,这将有所帮助(我不清楚您为什么需要使用
subsindex)。 -
您也可以为您的属性创建单独的 setter 方法和/或使用 Builder 设计模式。这在 Matlab 中并不常见,但在 C++ 等语言中通常是这样做的