在MATLAB中创建一个共享库

15

一位研究员在MATLAB中创建了一个小型模拟程序,我们希望让其他人也能够使用它。我的计划是将该模拟程序进行清理并转换成一组函数。然后我计划将其编译为C库,并使用SWIG创建Python包装器。此时,我应该能够从小型Django应用程序中调用该模拟程序。至少我希望是这样。

我的计划正确吗?目前是否存在任何严重的问题?

4个回答

6
记住的一件事是,MATLAB编译器实际上并没有将MATLAB代码编译成本机机器指令。它只是将其包装成一个独立的可执行文件或库,其中包含自己的运行时引擎来运行它。您将能够在没有安装MATLAB的情况下运行您的代码,并且您将能够与其他语言进行接口,但它仍然是解释的MATLAB代码,因此不会有加速效果。
另一方面,Matlab Coder可以从Matlab生成C代码。但是,也有一些限制。并非所有的Matlab函数都支持代码生成,还有一些你不能做的事情,比如动态更改变量类型。

4

我记得我曾经把一份MATLAB模拟程序封装成一个DLL文件,并且从一个Delphi应用程序中调用它。效果非常好。


2

我建议首先尝试使用ctypes

  1. 使用MATLAB编译器将代码编译成C。
  2. 将C代码编译成DLL。
  3. 使用ctypes加载并调用来自此DLL的代码。

最难的步骤可能是第1步,但如果您已经了解MATLAB并使用过MATLAB编译器,则不应该遇到严重的问题。


1

也许可以尝试使用ctypes代替SWIG。如果它已经作为Python 2.5的一部分被包含进来,那么它肯定是不错的 :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接