一位研究员在MATLAB中创建了一个小型模拟程序,我们希望让其他人也能够使用它。我的计划是将该模拟程序进行清理并转换成一组函数。然后我计划将其编译为C库,并使用SWIG创建Python包装器。此时,我应该能够从小型Django应用程序中调用该模拟程序。至少我希望是这样。 我的计划正确吗?目前是否存在任何严重的问题?
记住的一件事是,MATLAB编译器实际上并没有将MATLAB代码编译成本机机器指令。它只是将其包装成一个独立的可执行文件或库,其中包含自己的运行时引擎来运行它。您将能够在没有安装MATLAB的情况下运行您的代码,并且您将能够与其他语言进行接口,但它仍然是解释的MATLAB代码,因此不会有加速效果。另一方面,Matlab Coder可以从Matlab生成C代码。但是,也有一些限制。并非所有的Matlab函数都支持代码生成,还有一些你不能做的事情,比如动态更改变量类型。
我建议首先尝试使用ctypes。 使用MATLAB编译器将代码编译成C。 将C代码编译成DLL。 使用ctypes加载并调用来自此DLL的代码。 最难的步骤可能是第1步,但如果您已经了解MATLAB并使用过MATLAB编译器,则不应该遇到严重的问题。