MATLAB/Simulink自分用メモ1(変数を変えながらグラフを出力して保存する)

やるべき仕事の量と要求レベルがどんどん上がっていく一方、脳みそがどんどん衰えていく今日この頃、ある程度まとまった文書をアウトプットしていく癖をつけておかないと、もはや毎日が「何をしてたか、忘れちゃった」の繰り返しでしかない今日この頃、皆様いかがお過ごしでしょうか。

最近のマイブーム、MATLABについて自分用のメモ。

・変数を変えながら何度もSimulinkモデルを計算させる方法

そもそもMATLABはコマンドウィンドウからの入力ですべて操作できるようになっているのだが、コマンドウィンドウに入力する操作をファイルに保存して、そのファイルを呼び出すことでコマンドウィンドウへの入力に代用することができる。このファイルは拡張子「.m」で保存される。以下、これを「Mファイル」と呼称する。

また、計算モデルが複雑になるとコマンドだけでやり取りするのは人間には難しいので、MATLABプロダクトファミリのひとつであるSimulinkを使ってモデリングを行う。Simulinkを使って作成するモデルの拡張子は「.mdl」である。以下、これを「モデル」と呼称する。

今回は、モデルに代入する数値や条件を変えながら自動的に計算を行うためのMファイルの記述方法について書きたいと思う。

今回は図1のようなモデルを例に取る。

ファイル名は「sample_model.mdl」とする。モデルの作成方法については今回は議論しない。

このモデルの変数は「a1」「a2」「b」の三つである。この三つの変数を、それぞれ1〜10まで1きざみで代入して計算を行うとする。三つの変数それぞれに10パターンできるので、合計で10^3=1000パターンが出力される。

以下、Mファイルの記述である。説明はコメント行で代用する。

%-----------------------------------------------------
% ループ用サンプルMファイル
%-----------------------------------------------------

clear; %初期化のおまじない。

for l=1:10 %1番目のループ

for m=1:10 %2番目のループ

for n=1:10 %3番目のループ

tic; %処理時間計測開始 書かなくても良い 書いておくとコマンドウィンドウに処理時間が表示される

a1=l %a1にlの値を代入
a2=m %a2にmの値を代入
b=n %bにnの値を代入

sim(sample_model); %シミュレーション実行

toc; %処理時間計測終了

end;

end;

end;

%-----------------------------------------------------


a1、a2、bに値を代入する式を書き換えることでさまざまな数値を代入することができる。
たとえば、偶数にしたい場合は
a1=2*l;
とか、あるいは指数の場合は、
a1=10^l;
とか。

あんまりありがたみがないが、今日のところは疲れたのでこれまで。

次回はグラフの名前を自動的に付けて保存する方法について説明したいと思う。