如何在Python上运行MATLAB代码

Jul*_*ian 4 python matlab

我正在尝试使用Python运行MATLAB代码(我正在使用python 3.6)。我不需要传递任何参数或获取任何输出。我只需要Python上的一行代码即可简单地运行MATLAB代码。我在线上看到了一些答案,说要使用matlabroot并在命令提示符下使用它来安装某种引擎,但是它说我无法安装它,因为我的Python版本基本上还不够旧(没有意义)。有没有更简单的版本或执行此操作的另一种方式?

谢谢!

pas*_*cha 12

使用Oct2Py

您的第一个选择是使用与Octave一起运行的Oct2Py,Octave是一个免费的开源程序,可以运行Matlab文件和功能。只需使用以下终端命令安装它:

pip3 install oct2py
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样从Python脚本运行MatLab代码:

from oct2py import Oct2Py
oc = Oct2Py()


script = "function y = myScript(x)\n" \
         "    y = x-5" \
         "end"

with open("myScript.m","w+") as f:
    f.write(script)

oc.myScript(7)
Run Code Online (Sandbox Code Playgroud)

使用MatLab

如果要使用原始的MatLab引擎,则必须遵循以下步骤:

1.安装MatLab库

按照本页的说明,您首先必须打开MatLab并运行命令来找到MatLab根文件夹matlabroot。这应该给您Matlab的根文件夹。

然后打开终端(如果您使用Windows Windows + R,则可以通过按,然后键入cmd并按来完成此操作Enter。)在终端中,运行以下代码:

cd matlabroot\extern\engines\python
Run Code Online (Sandbox Code Playgroud)

确保用刚刚找到的路径替换matlabroot。然后你跑

python3 setup.py install
Run Code Online (Sandbox Code Playgroud)

要安装MatLab Python库。

2.使用MatLab库

按照此页面的说明,您可以

import matlab.engine

eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)
Run Code Online (Sandbox Code Playgroud)

如果要运行整个脚本,可以将脚本另存为MatLab * .m文件在当前文件夹中,然后按以下方式运行它们:

import matlab.engine
eng = matlab.engine.start_matlab()
eng.myMatlabFile(nargout=0)
Run Code Online (Sandbox Code Playgroud)

您也可以从Python创建MatLab文件:

import matlab.engine

script = "b = 5;\n" \
         "h = 3;\n" \
         "a = 0.5*(b.* h)"

with open("myScript.m","w+") as f:
    f.write(script)

eng = matlab.engine.start_matlab()
eng.myScript(nargout=0)
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助 :)

  • 如果其他人感到困惑,“myMatlabFile.m”是实际的文件名。它不是您向其传递文件名的函数。因此,如果您的文件是“foo.m”,则调用“eng.foo(...)”。 (2认同)