我正在尝试使用Python运行MATLAB代码(我使用的是Python 3.6)。
我不需要传递任何参数或获取任何输出。我只需要一行Python代码,简单地运行MATLAB代码。
我看到了一些在线答案,说要使用matlabroot
并在命令提示符中使用它来安装某种引擎,但它说我不能安装它,因为我的Python版本还不够旧(这没有意义)。
是否有更简单的版本或其他方法可以做到这一点?
谢谢!
您的第一个选择是使用Oct2Py,它可以与Octave一起运行,Octave是一个免费且开源的程序,可以运行Matlab文件和函数。只需使用以下终端命令进行安装:
pip3 install oct2py
然后你可以像这样从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)
如果您想使用原始的MatLab引擎,您需要按照以下步骤进行:
1. 安装MatLab库
按照此页面的说明,首先要通过打开MatLab并运行命令matlabroot
来找到MatLab根文件夹。这应该会给您Matlab的根文件夹。
然后打开终端(如果您使用的是Windows,可以按Windows + R
,然后键入cmd
并按Enter
)。在终端中运行以下代码:
cd matlabroot\extern\engines\python
请确保用刚才找到的路径替换matlabroot。然后运行
python3 setup.py install
安装MatLab Python库。
2. 使用MatLab库
按照此页面的说明进行操作,然后您可以
import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)
如果您想运行整个脚本,您可以将脚本保存为当前文件夹中的MatLab *.m文件,并像这样运行它们:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.myMatlabFile(nargout=0) # Expects a file named myMatlabFile.m in the same directory
你也可以从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)
myMatlabFile.m
是实际的文件名,而不是你传递给函数的文件名。因此,如果你的文件名是 foo.m
,你需要调用 eng.foo(...)
。 - jds