はじめに
大規模あるいは大量のデータを用いて、様々なパラメータに対して異なる計算結果を出力プログラムでは、結果をどこにどうやって保存するか、といった問題があると思います。
私がこれまで行ってきたものは、事前に結果用のフォルダを作成し、そこに計算結果をmatファイルなどで出力するやり方です。しかし、このフォルダの名前を毎回入力するのは面倒なときもありますし、一方で「この実行は〇〇というパラメータをXXにしたから… ”〇〇_XX”というフォルダ名で実行したい」といった趣旨でフォルダ名を付けたいこともあるかと思います。今回紹介するのは、そのどちらにも対応できるようになっているフォルダ生成コードです。
コード
result (自動生成)
├ 入力したフォルダ名(入力が無ければ"yyyymmdd_HHMMSS")
コード
% 現在時刻 now を 西暦4桁XX月XX日_XX時XX分XX秒の形で取得
sNowTime=datestr(now,'yyyymmdd_HHMMSS');
% 手入力を促す画面
prompt=sprintf('Type resultfoldername(empty:"%s"):',sNowTime);
nameFolder=input(prompt,'s');
% 入力があれば入力された文字、入力が無ければタイムスタンプをフォルダ名にする
if isempty(nameFolder)
str= sNowTime;
else
str= nameFolder;
end
% フォルダのパス生成
resPath=fullfile(pwd,'/result/',str,'/');
% フォルダ生成
mkdir(resPath);
フォルダのパスresPath
を残しておけば、計算結果を出力する際にそのまま使えます。
計算結果の出力例
fileName=fullfile(resPath,'result.mat');
save(fileName);
他に良い方法があれば教えてください。