% 連番ファイル名を取得する．あるいはそのファイルが存在するかをチェックする．
% [fn] = get_numed_fn(template,num,check)
% template  : 読み込むファイル名のテンプレート.###の部分が数字に置き換えられる．桁数分だけ#を書くこと．
% ext       : 読み込むファイルの拡張子
% num       : 番号．template内の##の数が足りない場合，自動的に拡張する．
% check     : 取得するファイル名が存在するかのチェックをするかどうか．trueの場合，
%             ファイルが存在するならファイル名が取得，ファイルが存在しないなら[]が返されるようになる．
%             falseの場合は確認せずにとりあえず返す．デフォルトではtrue.
% ファイルの存在確認は，MATLABサーチパス上で行われる．現在のディレクトリ内でのみ存在の確認を
% 行いたい場合には注意すること．
% 
% 使用例
% for i=1:10
%     fn = get_numed_fn('data_###.csv', i, true);
%     if ~isempty(fn) 
%        data{i}=importdata(fn);
%     else
%        data{i}=[];
%     end
% end
% →ファイルdata_001.csv～data_010.csvが存在すれば，読み込む．存在しなければ[]を返す．
%
% i.e.  #の数を少なくしておけば，0詰め無しでファイル名が取得可能．
%  fn = get_numed_fn('data_#.csv', 5 , true); →ファイル名data_5.csvを得る．
%  fn = get_numed_fn('data_#.csv', 220, true); →ファイル名data_220.csvを得る．


% 番号つきファイル名を取得する
function fn = get_numed_filename(template,num,check)
if num<0
    error('ファイル名の数字は正でないといけません．');
end
offsets = findstr(template,'#');
str_num = length(offsets);
str_num2 = length(num2str(num));
if str_num > str_num2
    ov_num = 10 ^ (str_num) ;
else
    ov_num = 10 ^ (str_num2) ;
end
base_str = num2str(ov_num+num);
base_str_s = base_str(2:end);
if(str_num<length(base_str_s))
   %＃の文字数より桁数が多い場合は勝手に拡張する
   template = [template(1:offsets(1)-1) repmat('#',1,length(base_str_s)-str_num) template(offsets(1):end)];
   offsets = findstr(template,'#');
end
fn = template;
fn(offsets) = base_str_s;

if check==true
    if ~exist(fn,'file')
        fn=[];
    end
end


