MATLAB引擎连接器
meg的Python项目详细描述
Meg:Python中的MATLAB引擎连接器
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之间发送数据之前启动。可以使用以下语法启动(并自动停止)引擎:
请注意,一旦引擎停止运行,所有存储在其中但尚未传输到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引擎中。在
- 项目
标签: