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

32 ビュー (過去 30 日間)
kanako machii
kanako machii 2020 年 7 月 1 日
コメント済み: Hiroyuki Hishida 2020 年 7 月 2 日
ループ処理の中で、繰り返し番号つきのファイル名(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 件のコメント
kanako machii
kanako machii 2020 年 7 月 2 日
ご回答ありがとうございます。
例えば、fname1.csv~fname99.csvをf1~f99という名前の行列として各々ワークスペースに読み込みたい時、
この方法で可能でしょうか。(for loopでfname1.csv~fname99.csvを読み込み、99個の行列がワークスペースに残る)
教えて頂いた方法では、fname1.csv~fname99.csvを上書きして読み込んでいるように思えるのですが、
正しいでしょうか。
お忙しいところ恐縮ですがよろしくお願いいたします。
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 件)

カテゴリ

Help Center および File Exchangeワークスペース変数と MAT ファイル についてさらに検索

Community Treasure Hunt

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

Start Hunting!