複数のCSVファイルをfor文を用いてreadmatrixで読み込む
47 views (last 30 days)
Show older comments
フォルダ内にcsvファイルが複数あります。csvファイルの中身は数値が複数入っています。
(例)1st.csv, 2nd.csv, 3rd.csv.........
これらを1つずつ読み込み、その内部の数値(data)の平均(ave)を1つの配列内(result)に保存していく場合は
data=readmatrix("1st.csv")
ave=mean(data)
result(1,1)=ave
data=readmatrix("2nd.csv")
ave=mean(data)
result(2,1)=ave
と一つずづ書くことで可能ですが、
今回はこれをfor文を用いて一気に処理したいです。
そのためにはreadmatrixのカッコ内をどう書けば良いのかわかりません。
%フォルダ内のcsvファイルをリストアップ
list=dir('*.csv');
for n = 1:length(list)
%list(n,1)に書いてある名前(n=1のとき1st.csv)のcsvファイルをreadmatrixで読み込みたい
data=readmatrix() %←この行をどう書けばよいのかがわかりません
% dataの平均をとる
ave=mean(data);
%配列result内のn行1列目に値を保存
result(n,1)=ave;
end
csvreadを使用する方法などが見つかったのですが、verR2020aのためcsvreadは使用できませんでした。
宜しくお願いします。
0 Comments
Accepted Answer
Shojiro SHIBAYAMA
on 3 Jun 2020
dirを使うとarrayが返されます。
arrayは括弧で番号付けされるので、
list( 1 )
などと書くと要素が取り出せます。list(1)などは構造体を持っているので、
.name あるいは .folder を駆使してファイルまでのパスを作れば良いです。
%フォルダ内のcsvファイルをリストアップ
list=dir('*.csv');
for n = 1:length(list)
%list(n,1)に書いてある名前(n=1のとき1st.csv)のcsvファイルをreadmatrixで読み込みたい
data=readmatrix(list(n).name)% 同じ階層にcsvがある場合
data=readmatrix([list(n).folder '¥' list(n).name])% 同じ階層にcsvがない場合(Windows)
% dataの平均をとる
ave=mean(data);
%配列result内のn行1列目に値を保存
result(n,1)=ave;
end
More Answers (1)
Atsushi Ueno
on 3 Jun 2020
dir関数の戻り値は n×1 の struct 配列で、今欲しい情報(ファイル名)はフィールド"name"です。
data=readmatrix() %←この行をどう書けばよいのかがわかりません
% ↓ ↓ ↓
data=readmatrix(list(n).name)
でうまくいくと思います。
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!