How to load files identified by the matlab function of "dir"?

84 views (last 30 days)
I have many files in a folder named "mat_files". What I want to do is to load the files and get their values. Below is my code:
a = dir('mat_files');
for i = 3:length(a);
filename = a(i).name;
load strcat('mat_files/', filename);
end;
This is the error:
Error using load
Unable to read file 'filename': no such file or directory.
When I type a(3).name in the command window, I get the correct filename of "ex0219.mat". Of course, I can load the data by typing "load ex0219.mat". Clearly load a(3).name does not work. I also tried load (a(3).name), which does not work either.
  3 Comments
sixwwwwww
sixwwwwww on 8 Dec 2013
rewrite it like this:
load(strcat('mat_files/', filename));

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 8 Dec 2013
A smiple modification gives you the answer:
myFolder = 'C:\users\leon\documents'; % or whatever.
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
filePattern = fullfile(myFolder, '*.mat');
matFiles = dir(filePattern);
for k = 1:length(matFiles)
baseFileName = matFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
storedStructure = load(fullFileName);
% Now do whatever you need to do with the structure you recalled.
end
  1 Comment
Leon
Leon on 8 Dec 2013
Edited: Leon on 8 Dec 2013
Thank you for the code. Glad to learn the use of "fullfile". It works flawlessly!

Sign in to comment.

More Answers (1)

sixwwwwww
sixwwwwww on 8 Dec 2013
Edited: sixwwwwww on 8 Dec 2013
you should read files like this:
directoryString = 'YourDirectory';
files = dir(strcat(directoryString,'*.mat'));
names = {files.name}
I hope it helps. Good luck!
  8 Comments

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by