ループ処理の中で、繰り返し番号つきのファイル名(csv, mat)のデータを読み込むにはどうしたらよいですか?
    14 views (last 30 days)
  
       Show older comments
    
    kanako machii
 on 1 Jul 2020
  
    
    
    
    
    Commented: Hiroyuki Hishida
    
 on 2 Jul 2020
            ループ処理の中で、繰り返し番号つきのファイル名(csvまたはmat)のデータを読み込む方法を教えてください。
例えば、保存されたfile1~file20のcsv,matデータをループ処理で読み込みたいです。
ご指導宜しくお願い致します。
0 Comments
Accepted Answer
  Hiroyuki Hishida
    
 on 1 Jul 2020
        
      Edited: Hiroyuki Hishida
    
 on 1 Jul 2020
  
      こんにんちは
ポイントは文字列処理になります。読み込みたいファイルが、相対パスでhogeというフォルダの下にあるとしましょう。そこにはfname1.csv~fname99.csvというfileがあるとします。そんなとき、例えばこれでいけます。
f_name_base = fullfile(pwd, '\hoge\');
for id=1:99
    str_id = num2str(id, '%i');
    f_path=strcat(f_name_base, 'fname', str_id, '.csv');
    %disp(f_path);
end
もしファイル名がfname001.csvなどと数字が3桁指定されているのであれば、
str_id = num2str(id, '%03i');
とすれば0でパディング可能です。なお、%iでなく%dとかの方が良いかもしれません。
よろしくおねがいします。
菱田
2 Comments
  Hiroyuki Hishida
    
 on 2 Jul 2020
				こんにちは
変数を99個つくらず、まとめる方法(配列に入れる方法)でもよろしいでしょうか?であればたとえばこういう方法があります。
f_name_base = fullfile(pwd, '\hoge\');
f_cell = cell(99,1);
for id=1:99
    str_id = num2str(id, '%i');
    f_path=strcat(f_name_base, 'f', str_id, '.csv');
    f_cell{id} = f_path;
    %disp(f_path);
end
f_cell(1)
f_cell{1}
ここではcell配列にファイルパスを取り込んでいますが、readtableなどにより取り込んだ行列であっても格納することは可能です。
いかがでしょうか?
菱田
More Answers (0)
See Also
Categories
				Find more on ループと条件付きステートメント in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
