Filter löschen
Filter löschen

Open Simulink model using Matlab engine for python

28 Ansichten (letzte 30 Tage)
Hariom Singh
Hariom Singh am 12 Sep. 2018
Bearbeitet: svanimisetti am 18 Mär. 2020
Installed matlab engine for python as mentioned
https://www.mathworks.com/help/matlab/matlab_external/connect-python-to-running-matlab-session.html
below command in python terminal gave me error
>>> import matlab.engine
>>> eng = matlab.engine.connect_matlab()
>>> eng.sqrt(4.0)
2.0
>>> eng.open_system('fcc_to_icd1.slx')
Too many output arguments
Traceback (most recent call last): File "<stdin>", line 1, in module File "C:\ProgramData\Anaconda3\lib\site-packages\matlab\engine\matlabengine.py", line 78, in _call_ stderr, feval=True).result() File "C:\ProgramData\Anaconda3\lib\site-packages\matlab\engine\futureresult.py", line 68, in result return self._future.result(timeout) File "C:\ProgramData\Anaconda3\lib\site-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: Too many output arguments
is there a way to open simulink models using python matlab engine ?

Akzeptierte Antwort

Stephan
Stephan am 12 Sep. 2018
Hi,
make and save a .m-file in your matlab folder containing the following line:
open_system('name of your file')
then call this script from python with:
import matlab.engine
eng = matlab.engine.connect_matlab()
eng.your_script_name(nargout=0)
This should call the script which then calls simulink to open your model.
Best regards
Stephan
  1 Kommentar
svanimisetti
svanimisetti am 18 Mär. 2020
Bearbeitet: svanimisetti am 18 Mär. 2020
Alternatively, just use the following!
>>> eng.open_system('vdp',nargout=0)
Seems to work for me. Also, if you don't care about opening the model in the Simulink GUI, just load the system and run it. If your model defines tout and yout, these are returned back to Python by evaluating the variables from Matlab workspace. Otherwise, the 'results' variable will have the standard output vector/array.
>>> eng.load_system('vdp')
>>> results = eng.sim('vdp')
>>> %#eng.bdclose('vdp')
>>> eng.close_system('vdp',nargout=0)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Call MATLAB from Python 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!

Translated by