mathworks / matlab-engine-for-python

Other
69 stars 9 forks source link

Cannot use set_param() to run a simulation in a MATLAB session that does not have a display. #36

Open awecefil opened 1 year ago

awecefil commented 1 year ago

Hello,

I'm currently using MATLAB Engine for Python on a Linux system. When I run the following commands:

self.eng = matlab.engine.start_matlab(option="-nodesktop")
self.eng.set_param(self.modelName, 'SimulationCommand', 'start', nargout=0)

I encounter the following error:

matlab.engine.MatlabExecutionError: You cannot use set_param to run a simulation in a MATLAB session that does not have a display. I found information in the MATLAB documentation (set_param) mentioning that if you start a session with matlab -nodisplay, you cannot use set_param to run a simulation. The -nodisplay mode does not support using set_param for simulation, and it suggests using the sim function instead.

However, I am hesitant to use the sim function because according to the documentation, certain functionalities like pause and continue are not supported.

I would like to understand why I am encountering this issue when I have not explicitly set -nodisplay. Could this be specific to using MATLAB Engine on a Linux system? Is there any recommended method to address this issue on Linux?

Additionally, please find below details about my environment:

Python Version: 3.7 MATLAB Version: R2020a Operating System: Linux Your assistance in resolving this matter would be highly appreciated.

Thank you.

alanfmw commented 10 months ago

By default, MATLAB Engine for Python starts MATLAB with the option "-nodesktop". However, if you specify the option "-desktop" (you can leave out "option=", since it's a positional argument):

self.eng = matlab.engine.start_matlab("-desktop")

it will override the default. This would probably be the best thing for you to do, given that you want to run pause and continue (that is, use MATLAB interactively).