MATLAB Answers

ループ処理の中で、繰​​り返し番号つきのフ​ァ​イル名(csv, mat)のデータを読​み込むにはどうしたら​よ​いですか?

41 ビュー (過去 30 日間)
ループ処理の中で、繰り返し番号つきのファイル名(csvまたはmat)のデータを読み込む方法を教えてください。
例えば、保存されたfile1~file20のcsv,matデータをループ処理で読み込みたいです。
ご指導宜しくお願い致します。

採用された回答

Hiroyuki Hishida
Hiroyuki Hishida 2020 年 7 月 1 日
編集済み: Hiroyuki Hishida 2020 年 7 月 1 日
こんにんちは
ポイントは文字列処理になります。読み込みたいファイルが、相対パスで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 件のコメント
Hiroyuki Hishida
Hiroyuki Hishida 2020 年 7 月 2 日
こんにちは
変数を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などにより取り込んだ行列であっても格納することは可能です。
いかがでしょうか?
菱田

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!