2017-03-20 44 views
0

私は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のパラメータを変更する他の方法はありますか?

答えて

1

これはPython APIでは問題ありません。 simコマンドは、MATLAB自体から使用されている場合でもブロックされています。

オーバーあなたが完了するまでシミュレーションを実行します

set_param(gcs,'SimulationCommand','Start') 

を用いたシミュレーションを開始する必要があり、これを来て。あなたが/必要途中でそれを停止したい場合は、私は `eng.set_param使用しようとした

set_param(gcs,'SimulationCommand','Stop') 
+0

使用(「scheme123を」、「SimulationCommand」、「スタート」、nargoutは0 =)'代わりに、しかし、次のエラーが発生しました: "set_paramを使用して、ディスプレイを持たないMATLABセッションでシミュレーションを実行することはできません。"表示なしで実行中のSumのパラメータを変更する他の方法はありますか? – user3618276

+0

デスクトップを開いた状態でMATLABエンジンを起動する必要があります: 'matlab.engine.start_matlab( ' - desktop')'。私はあなたが他の選択肢を持っているとは思わない。 '-minimize'と' -nosplash'を使って、デスクトップの表示を避けることもできます。 –

関連する問題