関数が認識されないことに関して
28 views (last 30 days)
Show older comments
NAGATA SOICHIRO
on 30 Nov 2021
Commented: NAGATA SOICHIRO
on 1 Dec 2021
非線形モデル予測制御を行おう考えているのですが、下のコードは初期化を行う行程なのですが、下コードの
”Ts = get_TimeStep('sim_data_vehicle_nl.sldd'); ”の部分で”関数または変数'get_TimeStep'が認識されません”と表示されてしまいます。
エラーを解決する方法を教えていただきたいです。
clc; Simulink.sdi.clear; Simulink.sdi.clearPreferences; Simulink.sdi.close;
system_model_name = 'Vehicle_system_Nonlinear_MPC';
controller_model_name = 'Parking_NMPC_MultiStage_Controller';
load_system(system_model_name);
set_param([system_model_name, '/MPC_Controller'], ...
'ModelName', controller_model_name);
Ts = get_TimeStep('sim_data_vehicle_nl.sldd'); %ここの部分
0 Comments
Accepted Answer
Toshinobu Shintai
on 30 Nov 2021
"get_TimeStep"は、このサンプルモデルの中で用意しているローカルな関数スクリプトでして、その関数スクリプト(get_TimeStep.m)が無い環境では実行できません。
具体的には、上記サンプルモデルの「common」というフォルダの中に「get_TimeStep.m」が入っています。
3 Comments
Toshinobu Shintai
on 30 Nov 2021
「get_TimeStep.m」は、MPCの機能やSimulinkモデルに組み込む必要はありません。このコマンドはSimulinkデータディクショナリファイル(.slddファイル)からサンプリングタイムステップの値を取り出すことをしているだけです。
なぜこのようなことをしているかと言うと、Simulinkモデルでは.slddファイルでパラメータを管理したいのですが、MATLABのライブスクリプト側からは.slddファイル内の変数値を直接読めないため、その値を取り出すためのコマンドを自作しました。
「get_TimeStep.m」以外にも、「set_slddVal.m」なども同じような意図で作成したスクリプトです。
要するに、サンプリングタイムステップは「sim_data_vehicle_nl.sldd」内のTimeStepの変数で一元管理を行い、サンプリングタイムステップを変更する際にはSimulinkモデル側とライブスクリプト側で2重に設定しなくてもいいようにしているわけです。
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!