主要内容

进行故障排除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)

SyntaxError:无效的语法

调用MATLAB打印函数从Python 2.7打印您创建与MATLAB的阴谋冲浪函数。

导入matlab。引擎eng = matlab.engine.start_matlab () eng.eval(“冲浪(山峰)”,nargout = 0) eng.print (“-djpeg”、“冲浪”,nargout = 0)
文件“< stdin >”, 1号线eng.print (“-djpeg”、“冲浪”,nargout = 0) ^ SyntaxError:语法是无效的

如果MATLAB和Python函数具有相同的名称,然后引擎调用MATLAB函数。

然而,发动机不能直接调用MATLAB函数,它有一个名字,也是一个Python语言的保留字。例如,在Python 2.7中,打印是一个保留字。(在Python 3。x, the previous code runs because打印是一个内置的函数,而不是一个保留字)。

为了避免这种错误,调用MATLAB函数eval

eng.eval(“打印(“-djpeg”、“冲浪”);“,nargout = 0)

如果您创建的MATLAB函数是一个函数,你可以重命名它,这样它的名字不再是一个Python保留字。Python文档保留字列表:

找不到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 ()

相关的话题