主要内容

进行故障排除MATLAB错误Python

MATLAB错误Python

当一个MATLAB®Python函数提出了一个错误,MATLAB引擎®停止了MATLAB函数,捕获异常。引擎将错误消息复制到一个新的Python例外。发动机提高了Python例外。

如果Python解释器捕获异常,译员来自MATLAB显示错误消息。你也可以处理异常提出的引擎在您的Python代码。看到matlab.engine.MatlabEnginematlab.engine.FutureResult参考页面的异常类型发动机可以提高。

MatlabExecutionError:未定义的函数

调用MATLAB√6从Python函数在整数。(这段代码示例省略了Python追溯,只显示了错误消息)。

导入matlab。引擎eng = matlab.engine.start_matlab()打印(eng.sqrt (4))
matlab.engine。MatlabExecutionError:未定义的函数“√”“int64”类型的输入参数。

MATLAB定义了一个√6函数,但预计输入参数的数据类型,而不是一个整数。然而,输入参数是4,通过MATLAB之前,Python解释4为整数。引擎将Python整数转换成一个int64MATLAB数据类型。

MATLAB和Python为数字定义不同的默认类型。如果你输入x = 4在MATLAB命令行,xMATLAB是一种。如果你输入x = 4在Python命令行,x是一个Pythonint

为了避免这种错误,指定Python数据类型的输入参数浮动。MATLAB引擎转换这种类型

打印(eng.sqrt (4.0))
2.0

SyntaxError:表达式无效的目标

你可以叫MATLABeval从Python创建MATLAB函数变量。(这段代码示例省略了Python追溯,只显示了错误消息)。

导入matlab。eng引擎eng = matlab.engine.start_matlab ()。eval (x = 4,)
SyntaxError:错误:表达式的左边等号不是一个有效的目标为一个任务。

当引擎调用eval,它通过MATLAB为执行的语句。当你不指定nargout输入参数,发动机预计一个输出参数。然而,这没有MATLAB语句返回输出参数。

为了避免这种错误,指定nargout为0时MATLAB函数调用返回输出参数。

eng。eval("x = 4;",nargout=0)

找不到MATLAB会议在Python

如果你覆盖操作系统临时TMP在MATLAB环境变量,Python可能无法连接到Python MATLAB引擎。例如,如果您在Python提示符处输入以下:

matlab.engine.find_matlab ()

Python显示()

Python使用MATLAB引擎临时文件夹为MATLAB会话共享记录信息。为了解决这个问题,做出以下更改环境变量在Python中。temp_folder是你设置的文件夹的路径在MATLAB。

操作系统。环境(TMP的)= r 'temp_folder的操作系统。环境(临时的)= r 'temp_folder' eng = matlab.engine.find_matlab ()

相关的话题