Using load for different files with varying names
1 view (last 30 days)
Show older comments
I have 25 files with .mat files, naming from data1 to data25
how to load them properly without manualy typing from 1 to 25
Here is my idea and the error
```
for i = 1:1:25
load('data%d.mat',i)
end
```
Error using load
Must be a text scalar.
0 Comments
Accepted Answer
Akira Agata
on 13 Sep 2022
How about the following?
for kk = 1:25
fileName = sprintf('data%d.mat', kk);
load(fileName)
%
% Some process for each file
%
end
2 Comments
Akira Agata
on 14 Sep 2022
Yes, of course it is recommended to load into an output variable, as you mentioned.
Thank you for your additional comment !
More Answers (1)
Stephen23
on 14 Sep 2022
Edited: Stephen23
on 14 Sep 2022
Here is a robust approach, by not LOADing directly into the workspace, which also also resolves your follow-up question. The code assumes exactly one variable per MAT file.
N = 25;
C = cell(1,N);
for k = 1:N
F = sprintf('data%d.mat',k);
C(k) = struct2cell(load(F));
end
All of your imported filedata wll be in the cell array C. Note that you can trivially loop over all of C, or access its contents individually. For example, the data for the second file:
C{2}
When you learn to avoid having meta-data in variable names (e.g. pseudo-indices), then you can start to learn how to write neat, simple, and very efficient MATLAB code.
0 Comments
See Also
Categories
Find more on File Operations 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!