Using MATLAB Engine API for Python
12 views (last 30 days)
Show older comments
I have a variable A= 25 (1X1 double) in my MATLAB workspace and I am using the MATLAB Engine API to call it in python by using the following code.
import matlab.engine
eng = matlab.engine.start_matlab()
var = eng.workspace['A']
print(var)
I am getting the following error message:
Error using matlab.internal.engine.getVariable
Undefined variable 'A'.
Traceback (most recent call last):
File "readingdata.py", line 20, in <module>
test = eng.workspace['A']
File "/usr/local/lib/python3.8/dist-packages/matlab/engine/matlabengine.py", line 120, in __getitem__
future = _method(attr)
File "/usr/local/lib/python3.8/dist-packages/matlab/engine/matlabengine.py", line 70, in __call__
return FutureResult(self._engine(), future, nargs, _stdout,
File "/usr/local/lib/python3.8/dist-packages/matlab/engine/futureresult.py", line 67, in result
return self.__future.result(timeout)
File "/usr/local/lib/python3.8/dist-packages/matlab/engine/fevalfuture.py", line 82, in result
self._result = pythonengine.getFEvalResult(self._future,self._nargout, None, out=self._out, err=self._err)
matlab.engine.MatlabExecutionError:
File /usr/local/MATLAB/R2022a/toolbox/matlab/external/engines/engine_api/+matlab/+internal/+engine/getVariable.m, line 27, in getVariable
Undefined variable 'A'.
I could do the same using scipy.io
Is there something I am missing?
0 Comments
Answers (1)
Kojiro Saito
on 28 Mar 2022
It's because engine.start_matlab launches a new MATALB session and there's no variable in workspace.
In MATLAB, you need to call matlab.engine.shareEngine.
[MATLAB side]
A = 25;
matlab.engine.shareEngine
Then, you need to create a session from Python using engine.connect_matlab not engine.start_matlab.
[Python side]
import matlab.engine
eng = matlab.engine.connect_matlab()
var = eng.workspace['A']
print(var)
11 Comments
See Also
Categories
Find more on Call MATLAB from Python in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!