Clear Filters
Clear Filters

Extracting a variable from a series of files contained inside a folder

1 view (last 30 days)
The problem is simple: I have a folder which contains 10 .mat files, each of them with a series of variables. What I need to do is to create a code which automatically selects one specific variable (always the same) from each file of said folder, then storing it in a separate matrix which I can use later.
Does anybody have a solution to this?
  1 Comment
Dyuman Joshi
Dyuman Joshi on 13 Feb 2024
Moved: Dyuman Joshi on 13 Feb 2024
Refer to this documentation page for importing and exporting multiple files - https://in.mathworks.com/help/matlab/import_export/process-a-sequence-of-files.html
Additionally, use load instead of importdata() for reading the .mat files.

Sign in to comment.

Accepted Answer

Voss
Voss on 13 Feb 2024
% the folder which contains 10 .mat files
file_path = '.';
% the name of the variable to load from each .mat file
variable_name = 'X';
% get file info. note that the files are not in any particular order. if
% you want a specific order, you'll have to take care to do that.
files = dir(fullfile(file_path,'*.mat'));
N = numel(files);
% load each X into a struct array S:
file_names = fullfile({files.folder},{files.name});
S = struct(variable_name,cell(1,N));
for ii = 1:N
S(ii) = load(file_names{ii},variable_name);
end
% if you want to combine the X from each mat file into a single array
X = cat(3,S.(variable_name));
% otherwise, you can just access them through S

More Answers (0)

Community Treasure Hunt

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

Start Hunting!