私はMATLAB Engine API for Python
を使用しています。私はPythonスクリプトで共有エンジンを持っており、この共有エンジンに別のPythonスクリプトを接続しています。 set_param
コマンドを使用して、実行中のシミュレーションのパラメータをSimulinkから変更することが可能かどうかを質問したいと思います。私の次の解決策はうまくいかないようです。 2番目のスクリプトのset_param
コマンドは、1番目のスクリプトからのsim()
コマンドが終了するまで待機しています。前もって感謝します。MATLAB Engine API for Python:実行中のシミュレーションのパラメータを変更する
第一スクリプト:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.eval("matlab.engine.shareEngine('my_sim123')")
eng.eval("load_system('scheme123')",nargout=0)
eng.eval("sim('scheme123')")
第二スクリプト:
import matlab.engine
eng = matlab.engine.connect_matlab('my_sim123')
eng.eval("set_param('scheme123/PID', 'P', '15')",nargout=0)
UPDATE:私が代わりにset_param('scheme123', 'SimulationCommand','Start')
を使用しようとしましたが、次のエラーが発生しました:「あなたはシミュレーションを実行するためのset_paramを使用することはできません表示されていないMATLABセッションで表示されます。表示なしで実行中のSumのパラメータを変更する他の方法はありますか?
使用(「scheme123を」、「SimulationCommand」、「スタート」、nargoutは0 =)'代わりに、しかし、次のエラーが発生しました: "set_paramを使用して、ディスプレイを持たないMATLABセッションでシミュレーションを実行することはできません。"表示なしで実行中のSumのパラメータを変更する他の方法はありますか? – user3618276
デスクトップを開いた状態でMATLABエンジンを起動する必要があります: 'matlab.engine.start_matlab( ' - desktop')'。私はあなたが他の選択肢を持っているとは思わない。 '-minimize'と' -nosplash'を使って、デスクトップの表示を避けることもできます。 –