一位研究人员在MATLAB中创建了一个小的模拟,我们希望其他人也能访问它。我的计划是获取这个模拟,清理一些东西,并将其转化为一组函数。然后我计划将其编译成一个C库,并使用SWIG创建一个Python Package 器。在这一点上,我应该能够从一个小的Django应用程序调用这个模拟。至少我希望如此。我的计划是否正确?是否有任何严重的陷阱是我目前没有意识到的?
8ulbf1ek1#
需要记住的一点是,MATLAB编译器实际上并没有将MATLAB代码编译成本地机器指令。它只是将其 Package 成一个独立的可执行文件或一个库,并使用自己的运行时引擎来运行它。您可以在没有安装MATLAB的情况下运行您的代码,也可以将其与其他语言连接,但它仍然是解释MATLAB代码,因此不会有加速。另一方面,Matlab编码器是可以从Matlab生成C代码的工具。不过,它也有一些限制。并不是所有的Matlab函数都支持代码生成,而且有些事情你不能做,比如动态地更改变量的类型。
9udxz4iz2#
我记得我能够将MATLAB模拟封装到DLL file中,然后从Delphi应用程序调用它,效果非常好。
iovurdzv3#
我也会先尝试ctypes。1.使用MATLAB编译器将代码编译成C。1.将C代码编译成DLL。1.使用ctypes从此DLL加载和调用代码最困难的步骤可能是1,但是如果你已经了解MATLAB并且使用过MATLAB编译器,你应该不会遇到严重的问题。
lrpiutwd4#
也许可以尝试ctypes而不是SWIG。如果它已经作为Python 2. 5的一部分包含在内,那么它一定很好:-)
4条答案
按热度按时间8ulbf1ek1#
需要记住的一点是,MATLAB编译器实际上并没有将MATLAB代码编译成本地机器指令。它只是将其 Package 成一个独立的可执行文件或一个库,并使用自己的运行时引擎来运行它。您可以在没有安装MATLAB的情况下运行您的代码,也可以将其与其他语言连接,但它仍然是解释MATLAB代码,因此不会有加速。
另一方面,Matlab编码器是可以从Matlab生成C代码的工具。不过,它也有一些限制。并不是所有的Matlab函数都支持代码生成,而且有些事情你不能做,比如动态地更改变量的类型。
9udxz4iz2#
我记得我能够将MATLAB模拟封装到DLL file中,然后从Delphi应用程序调用它,效果非常好。
iovurdzv3#
我也会先尝试ctypes。
1.使用MATLAB编译器将代码编译成C。
1.将C代码编译成DLL。
1.使用ctypes从此DLL加载和调用代码
最困难的步骤可能是1,但是如果你已经了解MATLAB并且使用过MATLAB编译器,你应该不会遇到严重的问题。
lrpiutwd4#
也许可以尝试ctypes而不是SWIG。如果它已经作为Python 2. 5的一部分包含在内,那么它一定很好:-)