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

44 vues (au cours des 30 derniers jours)
皓
le 31 Mai 2023
Commenté : le 7 Juin 2023
CSVファイルが100枚以上あるので毎回readmatrixで読み込むのは時間がかかるので、一度で読み込む方法はありますでしょうか?

Réponses (2)

Atsushi Ueno
Atsushi Ueno le 31 Mai 2023
>一度で読み込む方法はありますでしょうか?
CSVファイルならtabularTextDatastore、XLSXファイルならspreadsheetDatastoreを使って、複数のファイルを管理できます。データストアが機能過剰でしたら、フォルダに存在するCSVファイルをdir関数で検索し、ループを回して一ファイルずつ開いていく方法があります。
  3 commentaires
Atsushi Ueno
Atsushi Ueno le 4 Juin 2023
はい。CSVファイルから360×480×ファイル枚数分の情報を集め、変数 mat に格納しています。
余談ですが、「CSVファイルをmatに変換した」というと、CSVファイル⇒matファイルに変換した様で紛らわしいので、上記例の変数名を mat から temp に変更しました。

Connectez-vous pour commenter.


Hernia Baby
Hernia Baby le 1 Juin 2023
以下の流れで行いました
フォルダ内の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 commentaires
皓
le 7 Juin 2023
MATLABのバージョン と コードは以下に記載してるもので合ってますか?

Connectez-vous pour commenter.

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!