Why am I getting 'MatlabExecutionError: Too many output arguments.' when using the Matlab engine in Python?
36 次查看(过去 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
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()
采纳的回答
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 个评论
更多回答(1 个)
Khaoula Mosbahi
2021-8-9
hello everyone , i need your help , when i run matlab code en matlab i found this result ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/707202/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/707202/image.png)
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Call MATLAB from Python 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!