関数が認識されないことに関して
26 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NAGATA SOICHIRO
el 30 de Nov. de 2021
Comentada: NAGATA SOICHIRO
el 1 de Dic. de 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 comentarios
Respuesta aceptada
Toshinobu Shintai
el 30 de Nov. de 2021
"get_TimeStep"は、このサンプルモデルの中で用意しているローカルな関数スクリプトでして、その関数スクリプト(get_TimeStep.m)が無い環境では実行できません。
具体的には、上記サンプルモデルの「common」というフォルダの中に「get_TimeStep.m」が入っています。
3 comentarios
Toshinobu Shintai
el 30 de Nov. de 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重に設定しなくてもいいようにしているわけです。
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!