Open Simulink model using Matlab engine for python

19 vues (au cours des 30 derniers jours)
Hariom Singh
Hariom Singh le 12 Sep 2018
Modifié(e) : svanimisetti le 18 Mar 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 ?

Réponse acceptée

Stephan
Stephan le 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 commentaire
svanimisetti
svanimisetti le 18 Mar 2020
Modifié(e) : svanimisetti le 18 Mar 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)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Call MATLAB from Python dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by