进行故障排除MATLAB错误Python
MATLAB错误Python
当一个MATLAB®Python函数提出了一个错误,MATLAB引擎®停止了MATLAB函数,捕获异常。引擎将错误消息复制到一个新的Python例外。发动机提高了Python例外。
如果Python解释器捕获异常,译员来自MATLAB显示错误消息。你也可以处理异常提出的引擎在您的Python代码。看到matlab.engine.MatlabEngine
和matlab.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整数转换成一个int64
MATLAB数据类型。
MATLAB和Python为数字定义不同的默认类型。如果你输入x = 4
在MATLAB命令行,x
MATLAB是一种双
。如果你输入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文档保留字列表:
Python 2.7保留字(
https://docs.python.org/2/reference/lexical_analysis.html关键词
)Python 3。xreserved words (
https://docs.python.org/3/reference/lexical_analysis.html关键词
)
找不到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 ()