return empty array in c++ mexFunction in the out-of-process mexHost
    7 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I want to use the out-of-process functionnality and to return an empty array in my C++ mexFunction.
It is not exactly the same question as :
since it is in C++ and with feval.
Here the problem:
void MexFunction::operator()(mm::ArgumentList outputs, mm::ArgumentList inputs)
{
	outputs[0] = f.createEmptyArray();
}
that i called with
>> mh = mexhost; res = feval(mh,'example');
Error using matlab.mex.MexHost/feval
Too many output arguments.
 but directly called via the Command window I have:
>> example
ans =
     []
1 Kommentar
Antworten (1)
  Samay Sagar
      
 am 26 Sep. 2024
        I have also encountered this issue in the past while returning an empty array from a C++ MEX function. I have verified that this issue was fixed in MATLAB R2021a.
As a workaround, you can return a non-empty value like a string literal (say "empty_array") instead of an empty array, which can be later handled in MATLAB to replace the value with [ ].
Another workaround is to catch the error in MATLAB and handle it there to use [ ].
mh = matlab.mex.MexHost();
try
    res = feval(mh, "example");
catch ME
    switch ME.identifier
        case 'MATLAB:maxlhs' % The error when empty array is returned
            res = [];
        case 'MATLAB:mex:MexHostCrashed' % A general MEX error
            clear mex;
        otherwise
            rethrow(ME)
    end
end
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Write C++ Functions Callable from MATLAB (MEX Files) finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


