error output from python matlab engine

4 ビュー (過去 30 日間)
Jeremy Rutman
Jeremy Rutman 2016 年 1 月 13 日
コメント済み: Jeremy Rutman 2016 年 1 月 27 日
I'd like to get better debug info than the 'matlab function cannot be evaluated' that I currently see from a complex matlab function being run from python using the python matlab engine. Is there some way to pipe extra matlab debug output to a file and/or get more info ?
  2 件のコメント
Stephen23
Stephen23 2016 年 1 月 13 日
編集済み: Stephen23 2016 年 1 月 13 日
The documentation
states that you should get the whole MATLAB error message from the Python Engine: "When a MATLAB® function raises an error, the MATLAB Engine for Python® stops the function and catches the exception raised by MATLAB. The engine copies the error message to a new Python exception. The engine raises the Python exception."
That page gives several examples of this.
What other information would you like?
Jeremy Rutman
Jeremy Rutman 2016 年 1 月 27 日
pretty much anything beyond 'matlab function cannot be evaluated' would be great - i've been using
out = StringIO.StringIO()
err = StringIO.StringIO()
retvals = matlab_engine.myfunc(image_filename, nargout=3,stdout=out,stderr=err)
outstring = out.getvalue()
errstring = err.getvalue()
logging.debug('ml output:'+str(outstring)+'\n')
logging.debug('ml err output:'+str(errstring)+'\n')

サインインしてコメントする。

回答 (1 件)

Robert Snoeberger
Robert Snoeberger 2016 年 1 月 15 日
You could get the last uncaught exception [1] and then call getReport [2] to get the error message for that exception.
Example
>>> import matlab.engine
>>> eng = matlab.engine.start_matlab()
>>>
>>> # Do something that throws an exception...
>>>
>>> eng.eval('exception = MException.last;', nargout=0)
>>> eng.eval('getReport(exception)')
References

カテゴリ

Help Center および File ExchangeCall MATLAB from Python についてさらに検索

製品


Translated by