同じフォルダ内にある複数のcsvファイルをインポートしたい
조회 수: 15 (최근 30일)
이전 댓글 표시
同じフォルダ内に複数あるcsvファイルのa~b行c列にある数値をインポートし、一つの数値行列にまとめたいです。一つずつインポートすればいいのですがファイルの数が多いため、ご教示いただけますと幸いです。
댓글 수: 0
채택된 답변
Atsushi Ueno
2022년 11월 26일
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
추가 답변 (1개)
Atsushi Ueno
2022년 11월 26일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 テキスト ファイル에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!