📘 Simulinkで使う変数をMATLABで定義して保存・再利用する方法
~「変数が存在しません」エラー対策~
🔧 背景
Simulinkブロック(例:Transport Delayなど)では、遅延時間やゲインなどのパラメータに変数名を使うことがあります。しかし、変数がMATLABのワークスペースに存在しない場合、次のようなエラーが発生します:
🚨 変数 'T' が存在しません。
これは、Simulinkが参照する変数がまだ定義されていない or 読み込まれていないためです。
✅ ステップ1:コマンドウィンドウで変数を定義する
たとえば、以下のように T = 0.01;
と入力して変数を作成します:
T = 0.01; % 遅延時間 [秒]
これでSimulinkブロックで T
を使えるようになります。
✅ ステップ2:変数をファイル(*.mat)として保存する
定義した変数は .mat
ファイルとして保存し、次回以降も使えるようにします:
save delay_param.mat T
これで、delay_param.mat
に変数 T
が保存されます。
✅ ステップ3:Simulink実行前に変数を読み込む
Simulinkを実行する前に、MATLABで以下を実行します:
load delay_param.mat
これで変数 T
がワークスペースに復元され、Simulinkブロックが正常に動作します。
💡 補足:Model Properties に自動読込を設定
Simulinkモデルのプロパティから、起動時に自動で変数を読み込む設定も可能です。
- メニュー:
モデル設定 > コールバック > InitFcn
- 以下を記述:
load delay_param.mat
✅ 応用:複数変数を一括保存・読込
T = 0.01;
gain = 5;
save config_param.mat T gain
読み込み時:
load config_param.mat
🧪 まとめ
操作内容 | コマンド例 |
---|---|
変数の定義 | T = 0.01; |
保存 | save ファイル名.mat 変数名 |
読み込み | load ファイル名.mat |
自動読込設定 | InitFcn に load 記述 |
🎯 よくあるエラーと対処法
エラー内容 | 原因 | 解決策 |
---|---|---|
変数 'T' が存在しません |
ワークスペースに定義なし |
T = ... を定義 or load |
文字ベクトルの終端が… |
'T' の書き方誤り |
T と記述(クォート不要) |
値が 0 になる | 値の設定ミス or 単位ミス | 単位と値を見直す |
📝 おわりに
Simulinkでは変数管理が重要です。MATLAB側で変数を定義・保存し、再利用や共有を円滑にすることで、開発の再現性と効率が大きく向上します。