Using load for different files with varying names

4 views (last 30 days)
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.

Accepted Answer

Akira Agata
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
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 !

Sign in to comment.

More Answers (1)

Stephen23
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.

Tags

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!