2

环境:

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

我正在使用用 Matlab 编写的软件包的源代码(不幸的是,它是专有的,所以没有代码示例……抱歉),其中一个函数简要地使用了控制系统工具箱和信号处理工具箱。

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

根据 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选项),但我很茫然。任何建议将不胜感激!

4

1 回答 1

1

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

于 2013-05-23T03:46:02.700 回答