同じフォルダ内にある複数のcsvファイルをインポートしたい
19 views (last 30 days)
Show older comments
同じフォルダ内に複数あるcsvファイルのa~b行c列にある数値をインポートし、一つの数値行列にまとめたいです。一つずつインポートすればいいのですがファイルの数が多いため、ご教示いただけますと幸いです。
0 Comments
Accepted Answer
Atsushi Ueno
on 26 Nov 2022
for i = 1:100
fileID = fopen(['test' num2str(i) '.csv'], 'w');
nbytes = fprintf(fileID,'%5d,%5d,%5d,%5d,%5d\n',magic(5));
fclose(fileID); % 動作確認用にCSVファイル'test(数字).csv'を100個作成
end
ls
type test1.csv % 簡略化の為全ファイルとも同じデータ
%同じフォルダ内に複数あるcsvファイルのa~b行c列にある数値をインポートし、一つの数値行列にまとめたい
% 取り出したいのはa~b行c列にある数値即ち4と6
location = uigetdir(pwd); % csvファイルが含まれるフォルダを選択する
ttds = tabularTextDatastore(location,"FileExtensions",".csv","IncludeSubfolders",true); % 表形式テキストファイルのデータストア作成
ttds.SelectedVariableNames = "Var3"; % c列のみ読み取る様に設定する。変数名が設定されている場合は当該変数名を設定する
ds.SelectedFormats = "%f"; % c列の変数を浮動小数点数として読み取る
T = reshape(table2array(readall(ttds)),5,[])
T(1:2,:)
0 Comments
More Answers (1)
Atsushi Ueno
on 26 Nov 2022
for i = 1:100
fileID = fopen(['test' num2str(i) '.csv'], 'w');
nbytes = fprintf(fileID,'%5d,%5d,%5d,%5d,%5d\n',magic(5));
fclose(fileID); % 動作確認用にCSVファイル'test(数字).csv'を100個作成
end
% 取り出したいのはa~b行c列にある数値。a=1,b=2,c=3とすれば4と6を取り出す事になる。
a = 1; b = 2; c = 3;
location = uigetdir(pwd); % CSVファイルが含まれるフォルダを選択する
cd(location)
filelist = dir('**/*.csv'); % CSVファイルのリストを得る
for k = 1:length(filelist)
array = readmatrix([filelist(k).folder filesep filelist(k).name]); % CSVファイルを1つずつインポートする
T(:,k) = array(a:b, c); % 所定の値を取り出し一つの数値行列にまとめる
end
T
See Also
Categories
Find more on テキスト ファイル in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!