How to use a for cycle for opening .mat files
3 次查看(过去 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,
0 个评论
采纳的回答
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 个评论
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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!