How to use a for cycle for opening .mat files

1 次查看(过去 30 天)
Hi,
In the directory c:\MAT (it's not my workspace directory), I have the following .mat files:
A1B1.mat
A1B2.mat
A1B3.mat
A2B1.mat
A2B2.mat
A2B3.mat
A3B1.mat
A3B2.mat
A3B3.mat
How can I automate the opening/import of them, for example, using a for cycle, saving each .mat file in a new variable?
Best regards,

采纳的回答

Stephen23
Stephen23 2022-2-8
编辑:Stephen23 2022-2-8
The general concept is shown here:
You can easily store the imported data in the same structure as DIR returns, e.g.:
P = 'C:\MAT';
S = dir(fullfile(P,'*.mat'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = load(F);
end
All of the imported file data will be stored in the structure S. For example, for the second file:
S(2).name % filename
S(2).data % structure of the imported data
If each file contains exactly one variable of the same name then you can simplify the later processing by specifying that variable when importing:
P = 'C:\MAT';
S = dir(fullfile(P,'*.mat'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
T = load(F);
S(k).data = T.nameOfTheVariable;
end
Note that after then loop you can use this syntax, which might make processing your data easier:
  2 个评论
Hugo
Hugo 2022-2-9
Thank you for your useful answer. your solution works.
Now, if I would like to load each .mat file that your code originates into a variable,, how shall my "load" command be?
Stephen23
Stephen23 2022-2-9
"Now, if I would like to load each .mat file that your code originates into a variable"
They are already in a variable, the structure S. You can access them simply and efficiently using indexing.
If you want each file loaded into a separate, dynamically named variable, you might like to read this:

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2022-2-9

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by