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

18 次查看(过去 30 天)
kanako machii
kanako machii 2020-7-1
ループ処理の中で、繰り返し番号つきのファイル名(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 CenterFile Exchange 中查找有关 Whos 的更多信息

Community Treasure Hunt

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

Start Hunting!