Matlab: save 関数

informatics/commands_matlab/save_matlab
8-3-2017 updated

  1. 概要: save 関数とは
  2. for loop との組み合わせで、一連の計算結果を異なる mat ファイルに保存する

広告

概要: save 関数とは

save は、ワークスペースにある変数を .mat ファイルをして保存するコマンドである。

>> save

ワークスペースにある変数が全て matlab.mat として保存される。

>> save('filename')

ワークスペースにある変数が全て filename.mat として保存される。 ( ) の中は文字列 string である必要がある。

>> save('filename','variable')

ワークスペースにある variable という名前の変数だけが filename.mat として保存される。filename が文字列でなければならないのは理解しやすいが、変数を指定するときも変数の名前を文字列として指定する必要がある。つまり、どちらも  ' ' で囲む必要がある。ただし、num2str を使ったときはその結果が文字列になるので、' ' で囲む必要はない。

for loop との組み合わせで、一連の計算結果を異なる mat ファイルに保存する

num2str は、数字を文字列に変換するコマンドである。これを使って

for x=1:10;
save(num2str(x),'variable');
end

とすると、variable という名前の変数が Workspace にあれば、それが 1.mat, 2.mat, ....  10.mat という名前で保存される。

これでは、同じ変数が異なる名前で保存されるだけなので意味がないが、以下のように filelist によるデータ整理 を組み合わせることで、1 個体目の解析結果を 1.mat、2 個体目の解析結果を 2.mat ... という形で保存することができる。


個々の mat file に処理を施して別々に保存

5 個体のデータが、5 つの mat ファイルとして保存されているとする。それらの名前を filelist で管理して、解析結果を順に異なる mat ファイルとして保存する場合を考える。

for n=1:5
inputname=filename{n};  % 一時的な変数 inputname を作って...
load(inputname);     % 5 個体のデータを順番に load していく。
result=mean(data(:,1));  % data の 1 列目の平均をとって、result という変数にする。
save(num2str(n),'result');  % result を繰り返し数の名前 (数字) で保存する。
end

2 つの変数から名前をつけたいとき

上の発展型で、2 つの for loop の回数を合わせて mat ファイルの名前にする。N=5 で 3 回繰り返し実験を行い、その結果を別々のファイルに記述したい場合など。save の中に 2 つの文字列行列を入れることはできず、予め 2 つの情報を含めた行列を作っておく必要がありそうだ。

for individuals=1:5;

for trials=1:3;
ind=num2str(individuals); tri=num2str(trials); indtri=[ind tr];
save(indtrt,'variables');
end

end

コメント欄



フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。

References