How to create a python 3 class to start MATLAB and keep it running
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
tamashika
el 1 de Jun. de 2020
Comentada: tamashika
el 16 de Jun. de 2020
I'm using matlab 2017b and python 3 on windows 10. I want to create a class that can start the matlab and keep it open. However, matlab closes right after I finished the python script. Here is the code:
import matlab.engine
class Test:
def __init__(self):
self.eng = matlab.engine.start_matlab("-desktop")
if __name__ == "__main__":
Test()
I can open the matlab in python console with the "start_matlab" command, but with this class I will keep failing to keep it open.
Anyone know how I could make this work?
Thanks
0 comentarios
Respuesta aceptada
Kojiro Saito
el 2 de Jun. de 2020
test.py
import os
class Test:
def __init__(self):
self.eng = os.system("matlab -r \"matlab.engine.shareEngine('myMatlabEngine')\"")
if __name__ == "__main__":
Test()
test2.py
import matlab.engine
eng = matlab.engine.connect_matlab('myMatlabEngine')
print(eng.sqrt(4.0))
Usage:
Open a terminal
python test.py
This keeps MATLAB session running.
Then, open another terminal and call test2.py.
python test2.py
4 comentarios
Kojiro Saito
el 2 de Jun. de 2020
Hi Andy, yes, as document explains, "If you exit Python with an engine still running, then Python automatically stops the engine and its MATLAB process.", so matlab.engine.start_matlab cannot keep MATLAB engine running if the Python is exited. That's why I've recommended to use matlab.engine.shareEngine. But Python's matlab.engine does not have shareEngine, so I proposed to use os.system command instead.
Más respuestas (0)
Ver también
Categorías
Más información sobre Call MATLAB from Python en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!