How to create a python 3 class to start MATLAB and keep it running
5 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Kojiro Saito
2020 年 6 月 2 日
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 件のコメント
Kojiro Saito
2020 年 6 月 2 日
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.
その他の回答 (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!