gpt4 book ai didi

python - 从 python 调用 Matlab 的 ODE45

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:13 26 4
gpt4 key购买 nike

我想从 python 调用 Matlab 的 ode45 函数,就像在下面的 python 代码中调用 MATLAB 的 isprime() 函数一样

import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)

但我真的不知道如何用Python实现代码。我试过了

import matlab.engine

def dydt(t,y):
dydt= 2*y
return dydt

eng = matlab.engine.start_matlab()
T,Y=eng.ode45(dydt,[0, 20],[2, 0])

它返回了:

line 73, in callout=_stdout, err=_stderr)

TypeError: unsupported Python data type: function.

我已经根据以下链接安装了适用于 Python 的 MATLAB Engine API https://www.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html并使用以下链接中的示例成功测试了它 https://www.mathworks.com/help/matlab/matlab_external/call-matlab-functions-from-python.html .

我发现以下可能相关的线程 Imitate ode45 function from MATLAB in Python但据我所知,他们只是使用 python 的库来求解 ODE,而不是从 python 调用 MATLAB 的 ODE45。也许我只是没有正确理解这一点。

有人可以帮助我在这个问题上取得进展吗?谢谢!

最佳答案

复制 doc 中的示例:

import matlab.engine
eng = matlab.engine.start_matlab()
eng.eval('tspan = [0 5];',nargout = 0)
eng.eval('y0 = 0;',nargout = 0)
t,y=eng.eval('ode45(@(t,y) 2*t, tspan, y0)',nargout = 2)

现在您也可以绘制结果:

eng.plot(t,y,'-o')

关于python - 从 python 调用 Matlab 的 ODE45,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com