Why am I getting 'MatlabExecutionError: Too many output arguments.' when using the Matlab engine in Python?

79 ビュー (過去 30 日間)
Here is the code I am running on each side:
Python
>>> m1 = matlab.engine.start_matlab()
>>> testpath = 'Path/to/file/containing-testfunc.m'
>>> m1.addpath(testpath)
*lots of path gibberish*
>>> m1.testfunc()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Python/2.7/site-packages/matlab/engine/matlabengine.py"
, line 79, in __call__
_stderr).result()
File "/Library/Python/2.7/site-packages/matlab/engine/futureresult.py"
, line 107, in result
self._future,self._nargout, None, out=self._out, err=self._err)
MatlabExecutionError: Too many output arguments.
I have double checked the path to testfunc.m, and I suspect that Matlab is able to find it because otherwise it would say it could not find it.
Here are the contents of testfunc.m:
function [] = testfunc()
a = 2
end
As indicated by the name, this function is only a test because I found this error using a more complicated function. I created the testfunc() just to try to narrow down the reasons for which I might be getting this error. I am able to run testfunc() (and my more complicated function) from the Matlab gui if I use
Python
>>> m1.desktop(nargout=0)
Matlab
>> testfunc()
a =
2
This leads me to believe there is an issue with the Matlab engine or the way I am using it.
It might be important to point out that built in Matlab functions seem to be working fine in the engine for example:
m1.workspace['testvar'] = 10
I am only having trouble using functions that I include myself.
Any help would be greatly appreciated.
  4 件のコメント
rui gao
rui gao 2019 年 11 月 13 日
Thanks, it works.
We can also put some input parameters before the 'nargout=0' for the situation that the function need some input.
For example:
eng = matlab.engine.start_matlab()
eng.MatlabFunctionName(1, 2, 3, nargout=0)
eng.quit()
Nagabhushan SN
Nagabhushan SN 2020 年 4 月 20 日
Thanks! very useful. Is it possible to upvote a comment here? Like in SO

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

採用された回答

Bo Li
Bo Li 2015 年 7 月 1 日
Try this:
>>>m1.testfunc(nargout=0)
By default, the nargout is set to 1 in Python Engine:
Since testfunc.m does not return any result, you need to specify nargout to be 0 like what you did to launch the MATLAB Desktop:
>>>m1.desktop(nargout=0)
  2 件のコメント
Richard McEver
Richard McEver 2015 年 7 月 1 日
Thanks so much that solved it!
Bogdan -Ervin
Bogdan -Ervin 2023 年 6 月 1 日
How can I use disp method of a Matlab class in Python?

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

その他の回答 (1 件)

Khaoula Mosbahi
Khaoula Mosbahi 2021 年 8 月 9 日
hello everyone , i need your help , when i run matlab code en matlab i found this result
but when i try this code:
eng = matlab.engine.start_matlab()
kh=eng.Main(7, nargout=0)
print(kh)
the result always NONE
help please

カテゴリ

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

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by