Borrar filtros
Borrar filtros

複数のCSVファイル​をfor文を用いてr​eadmatrixで​読み込む

39 visualizaciones (últimos 30 días)
愛可里 熊田
愛可里 熊田 el 3 de Jun. de 2020
Comentada: 愛可里 熊田 el 3 de Jun. de 2020
フォルダ内に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は使用できませんでした。
宜しくお願いします。

Respuesta aceptada

Shojiro SHIBAYAMA
Shojiro SHIBAYAMA el 3 de Jun. de 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
  1 comentario
愛可里 熊田
愛可里 熊田 el 3 de Jun. de 2020
ありがとうございます!解決しました!
別階層にある場合も併記していただき感謝です。

Iniciar sesión para comentar.

Más respuestas (1)

Atsushi Ueno
Atsushi Ueno el 3 de Jun. de 2020
dir関数の戻り値は n×1 の struct 配列で、今欲しい情報(ファイル名)はフィールド"name"です。
data=readmatrix() %←この行をどう書けばよいのかがわかりません
% ↓ ↓ ↓
data=readmatrix(list(n).name)
でうまくいくと思います。
  1 comentario
愛可里 熊田
愛可里 熊田 el 3 de Jun. de 2020
ありがとうございます!解決しました!

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!