MATLAB引擎连接器

meg的Python项目详细描述


Meg:Python中的MATLAB引擎连接器

PyPI - Wheel

Meg是一个与MATLAB引擎接口的Python模块,允许在Python和MATLAB之间传输数据,并从Python调用MATLAB代码。在

假设您可以从命令行运行matlab(也就是说,主MATLAB可执行文件在您的路径中),那么使用Meg非常简单:

importmegimportnumpywithmeg.Engine()asengine:data=numpy.empty((4,3))# Copy Python data to the engineengine["data"]=data# Execute MATLAB instructionsengine("count = numel(data)")# Get data from MATLABprint(engine["count"])

Meg可以作为任何Python包安装:使用pip从PyPi获取最新的稳定版本(例如python3 -m pip install meg),或者克隆source code并将其添加到Python路径中。在

连接到MATLAB

Meg的主要工作部件是Engine对象:它必须在Python和MATLAB之间发送数据之前启动。可以使用以下语法启动(并自动停止)引擎:

^{pr2}$

请注意,一旦引擎停止运行,所有存储在其中但尚未传输到Python的数据都将丢失。在

也可以手动启动和停止发动机:

importmeg# Create the engine, but do not start itengine=meg.Engine()engine.open()# Interact with MATLABengine.close()

对于更复杂的环境(例如,多个版本的MATLAB、不在路径中的可执行文件等),可以指定目标MATLAB安装的根目录,以及启动引擎时要运行的显式命令:

importmeg# Target a specific installation of MATLABmeg.setup("/opt/MATLAB/R2012b")# Start the engine with a non-default commandwithmeg.Engine("/opt/MATLAB/R2012b/bin/matlab -nosplash")asengine:pass

从MATLAB获取数据

可以使用Engine对象在Python和MATLAB之间交换数据:要在名为bar的MATLAB对象中存储Python对象名foo的内容,只需编写engine["bar"] = foo。反向操作(将名为bar的MATLAB对象的内容存储到名为foo的Python对象)中,写入foo = engine["bar"]。在

数字(和数字容器)在MATLAB和Python之间按原样翻译。在Python中,list、tuples和numpy数组将被转换为MATLAB数值数组;而在MATLAB中,数值数组将转换为Python标量或numpy数组。在

在Python中,异构容器(包含不同类型对象的列表、元组或numpy数组)将转换为MATLAB单元数组;而在MATLAB中,单元数组将转换为numpy数组。在

从Python中,字典和结构化numpy数组被转换成MATLAB struct数组,逆向转换也是如此。在

调用MATLAB代码

MATLAB语句是通过调用引擎对象来运行的:假设您在MATLAB中存储了一个名为x的对象,通过engine("count = numel(x)")来计算其中的元素数。请注意,对象不会在Python和MATLAB之间自动交换:在MATLAB代码中使用它们之前,它们必须明确地存储在MATLAB引擎中。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
命令行参数的java ArrayIndexOutOfBoundsException   java令牌构造不正确   在emacs中更改javamode的缩进样式   如果FileInputStream未关闭,java应用程序将崩溃?   java在listview中显示图像:应用程序可能在其主线程上做了太多工作   Commons Lang中的java数值验证   Java小程序未在HTML中显示   Eclipse Java版本设置不正确   AWS JVM CPU限制上的java Docker   如何通过java graphics 2d将图片剪切成圆形?我希望结果与objectfit类似:css中的cover   java Strut2验证,覆盖css_xhtml主题   JMS发布者/订阅者模型中的java并发使用者   java无堆栈信息V(未知源)   java如何在JSON数组中拥有与JSON响应相同的顺序?