Loading multiple .mat files by using for loop

17 ビュー (過去 30 日間)
Tasadduq
Tasadduq 2014 年 11 月 6 日
コメント済み: Tasadduq 2014 年 11 月 6 日
Hello, I am trying to load some .mat files and run some specific commands on. The .mat files are named as the following:
% Data Files
dataset1_1.mat dataset2_1.mat dataset3_1.mat ...and so on
dataset1_2.mat dataset2_2.mat ...and so on
dataset1_3.mat ...and so on
...and so on
I want to first load all the dataset1_*.mat files and then perform some calculations on each of them in order (i.e. perform calculations on dataset1_1.mat, then dataset1_2.mat...and so on).
After completing all of the dataset1_*.mat files, I would like to move onto the next batch of files, dataset2_*.mat, and repeat(i.e. perform calculations on dataset2_1.mat, then dataset2_2.mat...and so on).
Process will continue until the last dataset*_*.mat file.
Here is my code so far
% code
files = dir('dataset*_1.mat');
for i = length(files)
files2 = dir('dataset(i)_*.mat');
for j = 1:length(files2)
a = load(files2(j).name);
%Perform some calculations on dataset
end
end
I am using 2 for loops, not sure where I am going wrong. Thanks for the help!

採用された回答

Orion
Orion 2014 年 11 月 6 日
編集済み: Orion 2014 年 11 月 6 日
the line
_files = dir('dataset*_1.mat');_
returns dataset1_1, dataset2_1,... not what you want. then
files2 = dir('dataset(i)_*.mat')
will return nothing, because (i) is not interpreted, you're asking for a file exactly named 'dataset(i)_*.mat'.
you should do something like
% number of set (dataset1, dataset2, ...if unknown, figure it out).
NumberOfDataset = 3;
for i = 1:NumberOfDataset
% get allfiles matching the pattern 'dataset(i)_*'
files = dir(sprintf('dataset%d_*.mat',i));
for j = 1:length(files)
fprintf('Current file : %s\n',files(j).name)
a = load(files(j).name);
%Perform some calculations on dataset
end
end
  6 件のコメント
Guillaume
Guillaume 2014 年 11 月 6 日
Personally, I would extract the numbers from the file names, sort them, and iterate over these real numbers rather than a count of them. This way you would avoid (or detect) problems when a file is missing.
Tasadduq
Tasadduq 2014 年 11 月 6 日
Thank you both. Yes, extracting the numbers from the file names and sorting & iterating is a great idea.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by