python调用matlab函数_如何使用matlab引擎API从python调用matlab函数文件?

我有一个名为“calculate_K_matrix.m”的matlab函数文件

'包含以下代码:function K = calculate_K_matrix(A, B, n)

K = place(A, B, eigs(A)*n)

end

我可以这样从matlab中调用它:

^{pr2}$

但当我尝试使用matlab引擎API从python调用此函数时,如下所示:import matlab

import matlab.engine

eng = matlab.engine.start_matlab()

A = matlab.double([[0, 1],[-100, -5]])

B = matlab.double([[0],[7]])

n = 1.1 double(param initializer=None, param size=None, param is_complex=False)

n_matlab = matlab.double([n])

eng.addpath(r'/home/ash/Dropbox/SimulationNotebooks/Control')

K = eng.calculate_K_matrix(A, B, n_matlab)

然后我得到以下错误:In [17]: run test.py

Attempt to execute SCRIPT calculate_K_matrix as a function:

/home/ash/Dropbox/SimulationNotebooks/Control/calculate_K_matrix.m

---------------------------------------------------------------------------

MatlabExecutionError Traceback (most recent call last)

/home/ash/Dropbox/SimulationNotebooks/Control/test.py in ()

10

11 eng.addpath(r'/home/ash/Dropbox/SimulationNotebooks/Control')

---> 12 K = eng.calculate_K_matrix(A, B, n_matlab)

/home/ash/anaconda2/envs/python3/lib/python3.5/site-packages/matlab/engine/matlabengine.py in __call__(self, *args, **kwargs)

76 else:

77 return FutureResult(self._engine(), future, nargs, _stdout,

---> 78 _stderr, feval=True).result()

79

80 def __validate_engine(self):

/home/ash/anaconda2/envs/python3/lib/python3.5/site-packages/matlab/engine/futureresult.py in result(self, timeout)

66 raise TypeError(pythonengine.getMessage('TimeoutCannotBeNegative'))

67

---> 68 return self.__future.result(timeout)

69

70 def cancel(self):

/home/ash/anaconda2/envs/python3/lib/python3.5/site-packages/matlab/engine/fevalfuture.py in result(self, timeout)

80 raise TimeoutError(pythonengine.getMessage('MatlabFunctionTimeout'))

81

---> 82 self._result = pythonengine.getFEvalResult(self._future,self._nargout, None, out=self._out, err=self._err)

83 self._retrieved = True

84 return self._result

MatlabExecutionError: Attempt to execute SCRIPT calculate_K_matrix as a function:

/home/ash/Dropbox/SimulationNotebooks/Control/calculate_K_matrix.m

我如何解决这个问题?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python调用MATLAB函数有几种方法。 1. 使用MATLAB Engine APIMATLAB提供了Engine API,可以在Python中直接调用MATLAB函数。首先,确保你已经安装了MATLAB,并且已经将MATLAB引擎添加到Python的环境变量中。然后,可以使用以下代码示例调用MATLAB函数: ```python import matlab.engine # 启动MATLAB引擎 eng = matlab.engine.start_matlab() # 调用MATLAB函数 result = eng.my_matlab_function(arg1, arg2, ...) # 关闭MATLAB引擎 eng.quit() ``` 在上面的示例中,`my_matlab_function`是你想要调用MATLAB函数,`arg1`、`arg2`等是传递给函数的参数。 2. 使用MATLAB Compiler:如果你的MATLAB代码已经被编译为可执行文件或共享库,你可以使用`subprocess`模块在Python调用它。例如,如果你有一个名为`my_matlab_function.exe`的可执行文件,可以使用以下代码调用它: ```python import subprocess # 调用MATLAB可执行文件 result = subprocess.run(['my_matlab_function.exe', arg1, arg2, ...], capture_output=True, text=True) # 输出结果 print(result.stdout) ``` 在上面的示例中,`arg1`、`arg2`等是传递给MATLAB可执行文件的参数。 3. 使用MATLAB引擎for Python:MathWorks还为Python提供了MATLAB引擎for Python,它允许你在Python中直接调用MATLAB函数,类似于MATLAB Engine API。你可以通过安装`matlab`包来使用它。具体使用方法可以参考MathWorks官方文档。 无论使用哪种方法,你都需要确保已经正确安装了MATLAB,并且将其配置为可以与Python交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值