Mex或Compile(mcc)使用工具包的Matlab函数

时间:2013-05-23 00:02:33

标签: matlab matlab-compiler

环境:

  • Matlab R2012a(必要时我可以访问其他人)
  • 已安装所有工具箱/编译器
  • Ubuntu 12.04 64位和/或Windows 7 64位

我正在使用Matlab编写的软件包的源代码(不幸的是它的专有,因此没有代码示例......抱歉),并且一个功能简要地使用了控制系统工具箱和信号处理工具箱。

我在个人计算机上运行代码没有问题,因为我已经安装了所有工具箱,但是我想使用这两个工具箱编译(mex或mcc)JUST函数。当然,目标是在没有这些工具箱的机器上运行软件,同时保持剩下的代码可以更改。

根据matlab,他们编译几乎使用任何工具箱的代码都没有问题。以下是支持mcc编译的工具箱列表: http://www.mathworks.com/products/compiler/supported/compiler_support.html

问题在于,mcc不再允许使用-x选项进行编译来创建函数的mex-ed版本,因此我不得不创建一个C可执行文件(可能?希望不会)。此特定函数将大型矩阵作为参数(作为命令行参数写入不切实际)并返回单元数组的结构。

解决这个问题的唯一方法(就像我现在看到的那样)是将参数(大矩阵)写入二进制.mat文件中的硬盘驱动器,在参数中读取已编译的C二进制文件,运行算法,最后将返回值保存在另一个.mat中,以便父线程加载回内存。

这似乎完全不切实际。我非常感谢其他建议。如果有任何疑问,请告诉我。提前谢谢!

[编辑1] codegen包不支持tf.m。看起来这应该是可能的(并且可以使用mex -x选项),但我很茫然。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为不再支持-x的原因是Matlab现在有一个名为“coder”的产品,它将.m个文件转换为.c个文件,并且还可以创建{来自“合适”.mex文件的{1}}文件使用选项.m来指定输入参数:http://www.mathworks.com/videos/generating-c-code-from-matlab-code-68964.html