複数のCSVファイルを一度に読み込む

70 ビュー (過去 30 日間)
皓
2023 年 5 月 31 日
コメント済み: 2023 年 6 月 7 日
CSVファイルが100枚以上あるので毎回readmatrixで読み込むのは時間がかかるので、一度で読み込む方法はありますでしょうか?

回答 (2 件)

Atsushi Ueno
Atsushi Ueno 2023 年 5 月 31 日
>一度で読み込む方法はありますでしょうか?
CSVファイルならtabularTextDatastore、XLSXファイルならspreadsheetDatastoreを使って、複数のファイルを管理できます。データストアが機能過剰でしたら、フォルダに存在するCSVファイルをdir関数で検索し、ループを回して一ファイルずつ開いていく方法があります。
  3 件のコメント
皓
2023 年 6 月 4 日
ワークスペースに名前:mat,値:360×480×ファイル枚数と表示されると思うのですが、読み込みたいCSVファイルをmatに変換したという認識で合ってますでしょうか?
Atsushi Ueno
Atsushi Ueno 2023 年 6 月 4 日
はい。CSVファイルから360×480×ファイル枚数分の情報を集め、変数 mat に格納しています。
余談ですが、「CSVファイルをmatに変換した」というと、CSVファイル⇒matファイルに変換した様で紛らわしいので、上記例の変数名を mat から temp に変更しました。

サインインしてコメントする。


Hernia Baby
Hernia Baby 2023 年 6 月 1 日
以下の流れで行いました
フォルダ内のcsvを読み込みます
Files = dir('*.csv')
Files = 3×1 struct array with fields:
name folder date bytes isdir datenum
Path = Files(1).folder;
まずはx,y情報含めた行列を読み込みます
% 3行目1列目から読み込む
T = readmatrix(fullfile(Path,Files(1).name),'Range',[3,1]);
x, yを抽出
% 1列目以降
x = T(1,2:end)
x = 1×10
0 1 2 3 4 5 6 7 8 9
% 3行目以降
y = T(2:end,1)
y = 10×1
0 1 2 3 4 5 6 7 8 9
3次元データを抽出
% ファイル文奥行きを持たせる
C = zeros([size(T(2:end,2:end)),length(Files)]);
各ステップごとで行列を読み込む
for ii = 1:length(Files)
% 4行目x2列目から読み込む
C(:,:,ii) = readmatrix(fullfile(Path,Files(1).name),'Range',[4,2]);
end
可視化
[X,Y] = meshgrid(x,y);
figure
hold on
for ii = 1:length(Files)
contour3(X,Y,C(:,:,ii),50)
end
view(3)
size(C)
ans = 1×3
10 10 3
  5 件のコメント
Hernia Baby
Hernia Baby 2023 年 6 月 5 日
Q. プログラミングするのに実行するために使用できる命令を収納するファイルという認識で合ってますでしょうか?
A. Yesです。
MATLABではスクリプト(.m) か ライブスクリプト(.mlx) でプログラミングコードを書きます。
ライブスクリプトは以下のようになっています。
これを聞いた理由としては図がどのように表示されているか気になったためです。
再現したいので MATLABのバージョン と コードはどっちで書いてるか 教えてください。
-------
Q. どのような処理がされているのかが分からないです。
A. 3次元のゼロ行列を作り、読み込んだデータをそれぞれ当てはめていっています
まずは最初の準備をしましょう
Files(1,1) = "https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400554/File_1.csv";
Files(2,1) = "https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400559/File_2.csv";
Files(3,1) = "https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400564/File_3.csv";
Files
Files = 3×1 string array
"https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400554/File_1.csv" "https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400559/File_2.csv" "https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1400564/File_3.csv"
T = readmatrix(Files(1),'Range',[3,1]);
x = T(1,2:end);
y = T(2:end,2);
ここからが質問内容です
まずは計算を速くするために zerosで行×列×ファイルの数分 のゼロ行列を作成します
sz = size(T(2:end,2:end))
sz = 1×2
10 10
L = length(Files)
L = 3
sz3D = [sz, L]
sz3D = 1×3
10 10 3
C = zeros(sz3D)
C =
C(:,:,1) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
次にそれぞれのcsvファイルを読み込みます。
読みたい行列が始まるのが4行目2列目以降です。
'Range'オプションで読み込むスタート位置を調整しています。
for ii = 1:length(Files)
% 4行目x2列目から読み込む
C(:,:,ii) = readmatrix(Files(ii,1),'Range',[4,2])
end
C =
C(:,:,1) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969 C(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C =
C(:,:,1) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969 C(:,:,2) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969 C(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C =
C(:,:,1) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969 C(:,:,2) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969 C(:,:,3) = 20.9956 21.5027 22.5579 23.5740 25.7543 24.8796 23.6936 20.1326 23.2599 25.9790 20.9485 22.7065 24.7467 20.4409 22.8932 20.8549 22.6598 20.4190 21.8263 23.9059 24.7823 24.7825 25.0409 20.3789 24.0325 20.9318 20.4176 23.7508 25.1942 20.2936 24.9702 20.6613 24.6756 21.6393 23.7916 24.7315 24.0600 25.7904 25.9719 20.4059 23.0641 25.8018 20.4979 23.8609 23.3080 20.7770 25.3174 25.5809 20.7247 24.5512 24.2058 22.7462 23.3867 21.2278 23.6208 21.2953 24.7916 22.7610 23.1439 22.6841 22.3390 22.1759 23.0852 24.3989 21.3414 24.2751 20.0528 22.1631 25.5899 21.6812 23.1705 20.1017 24.0115 25.9518 22.3422 23.1242 23.9464 24.9976 25.1449 23.3835 24.7370 23.1973 23.6378 21.0148 25.3373 20.8549 23.1203 21.5420 22.0778 25.4107 22.3286 25.3378 23.5156 22.9028 21.6234 21.3697 25.7787 24.7483 23.8705 23.7969
皓
2023 年 6 月 7 日
MATLABのバージョン と コードは以下に記載してるもので合ってますか?

サインインしてコメントする。

タグ

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!