Using load for different files with varying names

1 view (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
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);
% Some process for each file
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 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));
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:
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.


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!