Matlab 编译项目的用户定义配置

Posted

技术标签:

【中文标题】Matlab 编译项目的用户定义配置【英文标题】:User-defined configurations for Matlab Compiled Projects 【发布时间】:2017-07-18 16:52:07 【问题描述】:

我正在使用 Matlab 编译器将 Matlab 代码编译成 dll,我可以在其他地方运行。但是,我的 dll 和函数有很多配置变量,而且太多,它们都不能作为函数的输入。

目前,用户指定 .mat 文件的文件路径,该文件在所有配置设置的编译代码中加载。执行 .m 文件以生成 .mat 文件。但是,当配置设置更改时,用户必须进入 .m 文件更改必要的设置并重新执行它以生成更新的 .mat 文件。

显然,这个过程很麻烦,很容易忘记重新执行 .m 以更新配置。我考虑过但似乎有问题的几件事:

如果 .mat 文件可以用文本编辑器读取/编辑,那就太好了,但据我所知,这是不可能的

另一种方法是 XML,但我的印象是 Matlab 没有很好的 XML 支持

运行 .m 文件以填充已编译 dll 中的工作空间,但这是不可能的

所以我的问题是,是否有其他人之前遇到过这个问题,或者是否可以想到比我目前的方法更精简的任何其他替代方法。

感谢阅读!

【问题讨论】:

【参考方案1】:

因此您可以使用 XML - MATLAB 确实通过 xmlreadxmlwrite 支持 XML。这些函数返回/接受一个您需要自己操作的 DOM 节点,这可能有点繁琐。如果用户想要更改配置,XML 也不是那么有趣,他们必须编辑或阅读。

如果您没有使用 MATLAB Compiler,您也可以直接使用 .m 文件来存储配置信息。但是,如果您正在编译,那将无法正常工作,因为 .m 文件将被加密并且不再可编辑。

我通常将YAML 用于配置文件。 YAML 是一种基于文本的格式,因此用户将能够在文本编辑器中手动编辑它们,并且您将能够对文件进行版本控制;但它比 XML 更易于阅读。没有尖括号,它的布局更加简单,您可以包含 cmets 来分隔和解释配置的各个部分。

MATLAB 本身并不支持 YAML,但您可以下载一些运行良好、易于集成且免费许可的第三方软件(例如 here 或 here)。我自己也编写了代码,如果您需要,我很乐意以某种方式分享。

【讨论】:

以上是关于Matlab 编译项目的用户定义配置的主要内容,如果未能解决你的问题,请参考以下文章

编译的 MATLAB 错误:“struct”类型的输入参数的未定义函数“ft_datatype_sens”

Matlab:无法使用 openmp 编译 mex(未定义的参考)

是否可以在您的 Matlab 编译器运行时安装中添加自定义工具箱?

Matlab如何在模糊逻辑工具箱中自定义隶属度函数?

如何在用户定义的 MATLAB 函数中初始化变量(simulink)

MATLAB:mex-compile 上缺少框架 – 架构 x86_64 的未定义符号