环境:
我正在使用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
选项),但我很茫然。任何建议将不胜感激!
答案 0 :(得分:1)
我认为不再支持-x
的原因是Matlab现在有一个名为“coder”的产品,它将.m
个文件转换为.c
个文件,并且还可以创建{来自“合适”.mex
文件的{1}}文件使用选项.m
来指定输入参数:http://www.mathworks.com/videos/generating-c-code-from-matlab-code-68964.html