主要内容

排除故障MATLAB错误Python

MATLAB错误Python

当一个matlab.®函数引发错误,Matlab引擎用于Python®停止函数并捕获MATLAB抛出的异常。引擎将错误消息复制到一个新的Python异常。引擎会引发Python异常。

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

MatlabExecutionError:未定义的函数

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

导入matlab。Engine eng = matlab.engine.start_matlab() print(eng.sqrt(4))
matlab.engine.matlabexecutionerror:用于输入'Int64'的输入参数的未定义功能'sqrt'。

MATLAB定义了一个√6函数,但期望输入参数为数据类型,而不是整数。然而,输入参数是4,在传递给MATLAB之前,Python将4解释为一个整数。该引擎将Python整数转换为int64MATLAB数据类型。

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

要避免此错误,请指定Python数据类型的输入参数漂浮.发动机将此类型转换为Matlab

打印(eng.sqrt (4.0))
2.0

语法错误:表达式目标无效

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

导入matlab。Engine eng = matlab.engine.start_matlab() eng。eval (x = 4,)
syntaxError:错误:等号左侧的表达式不是分配的有效目标。

当引擎召唤时eval,它将语句传递给MATLAB执行。当您没有指定输入参数时露怪输入参数,引擎需要一个输出参数。然而,这个MATLAB语句不返回输出参数。

若要避免此错误,请指定露怪当您调用的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)
^ SyntaxError: invalid syntax .print("-djpeg","surf",nargout=0)

如果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

如果您覆盖操作系统tem或者TMP在MATLAB环境变量中,Python可能无法连接到MATLAB Engine for 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 ()

相关话题