主要内容

进行故障排除MATLAB错误Python

MATLAB错误Python

当一个MATLAB®函数引发错误,MATLAB引擎的Python®停止函数并捕获由MATLAB引发的异常。引擎将错误消息复制到一个新的Python异常中。引擎引发Python异常。

如果Python解释器捕获了异常,则解释器将显示来自MATLAB的错误消息。您还可以在Python代码中处理由引擎引发的异常。看到matlab.engine.MatlabEnginematlab.engine.FutureResult引擎可能引发的异常类型的引用页。

MatlabExecutionError:未定义的函数

调用MATLAB√6Python中的整数函数。(此代码示例省略了Python跟踪,只显示了错误消息。)

导入matlab。Engine eng = matlab.engine.start_matlab() print(eng.sqrt(4))
未定义函数'sqrt'用于类型'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: Expression Not Valid Target

你可以调用MATLABeval函数从Python创建MATLAB变量。(此代码示例省略了Python跟踪,只显示了错误消息。)

导入matlab。Engine eng = matlab.engine.start_matlab() eng。eval (x = 4,)
在等号左边的表达式不是一个有效的赋值目标。

当引擎调用eval,将语句传递给MATLAB执行。当不指定输入参数时nargout输入参数,引擎需要一个输出参数。但是,这个MATLAB语句不返回输出参数。

若要避免此错误,请指定nargout当您调用的MATLAB函数没有返回输出参数时,为0。

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

SyntaxError:无效的语法

调用MATLAB打印函数来打印用MATLAB创建的绘图冲浪函数。

导入matlab。Engine eng = matlab.engine.start_matlab() eng.eval("surf(peaks)",nargout=0) eng.print("-djpeg","surf",nargout=0)
文件"", line 1 eng.print("-djpeg","surf",nargout=0) ^ SyntaxError:无效语法

如果MATLAB和Python函数有相同的名称,那么引擎调用MATLAB函数。

但是,引擎不能直接调用具有Python语言中保留字名称的MATLAB函数。例如,在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可能无法连接到MATLAB引擎的Python。例如,如果你在Python提示符中输入以下内容:

matlab.engine.find_matlab ()

Python显示()

MATLAB Engine for Python使用临时文件夹来记录共享MATLAB会话的信息。要解决这个问题,请对Python中的环境变量进行以下更改。temp_folder是你在MATLAB中设置的文件夹的路径。

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

相关的话题