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

79 visualizzazioni (ultimi 30 giorni)
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 Commenti
Leon
Leon il 8 Dic 2013
Modificato: Leon il 8 Dic 2013
Thank you so much for the tip. I missed the path of the files when using load. But why
load strcat('mat_files/', filename) ;
does not work either?
sixwwwwww
sixwwwwww il 8 Dic 2013
rewrite it like this:
load(strcat('mat_files/', filename));

Accedi per commentare.

Risposta accettata

Image Analyst
Image Analyst il 8 Dic 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 Commento
Leon
Leon il 8 Dic 2013
Modificato: Leon il 8 Dic 2013
Thank you for the code. Glad to learn the use of "fullfile". It works flawlessly!

Accedi per commentare.

Più risposte (1)

sixwwwwww
sixwwwwww il 8 Dic 2013
Modificato: sixwwwwww il 8 Dic 2013
you should read files like this:
directoryString = 'YourDirectory';
files = dir(strcat(directoryString,'*.mat'));
names = {files.name}
I hope it helps. Good luck!
  8 Commenti
Leon
Leon il 8 Dic 2013
Modificato: Leon il 8 Dic 2013
>> filename{1}
ans =
ex0209a.mat
After I replace filename with filename{1}, it is working now. Thank you so much!

Accedi per commentare.

Categorie

Scopri di più su File Operations in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by