How to accumulate values from time 1 to the last time
1 回表示 (過去 30 日間)
古いコメントを表示
I have more than 10000 files and I want to accumulate the values of given variable between all these times and then plot it on a single image. How can I do it? The files are 1000x1000 matrices.
2 件のコメント
the cyclist
2021 年 9 月 23 日
Let's just suppose, to keep things easy for understanding, that you only have two files, and each one has a 3x3 matrix. Suppose those two matrices are
M1 = magic(3)
M2 = magic(3) + 17
What exactly should the output be?
Also, what is the file type? Excel, CSV, MATLAB mat file?
回答 (2 件)
Sulaymon Eshkabilov
2021 年 9 月 23 日
Here is one of the possible routines to read all 1e4 files and collect all data into a signle variable and the rest is relatively simple:
clearvars
FILE = fullfile('C:\Users\...', '*.txt'); % Directory where the files are residing. Your data file extension, e.g.: .txt, .xlsx, .csv, etc
LIST = dir(FILE);
N = length(LIST); % N = 1e4 as you stated that 1e4 files
D = zeros(1e3, 1e3, N);
for ii = 1 : N
FFName = fullfile(LIST(ii).folder, LIST(ii).name);
DATA = readmatrix(FFName);
D(:, :, ii) = DATA; % NOW D contains all data from 10000 files
end
... % Select and process the part of D that is necessary
2 件のコメント
Sulaymon Eshkabilov
2021 年 9 月 26 日
These are not coding problems but rather memory problems. That means either you should process your data chunk by chunk or increase the memory in your matlab settings.
Stephen23
2021 年 9 月 26 日
P = 'absolute or relative path to where the files are saved';
S = dir(fullfile(P, '*.txt')); % Select the file extension to suit your data files
M = 0;
for k = 1:numel(S)
F = fullfile(P, S(k).name);
M = M + readmatrix(F);
end
参考
カテゴリ
Help Center および File Exchange で JSON Format についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!