Run code on multiple files within a directory?

1 vue (au cours des 30 derniers jours)
Ross
Ross le 12 Sep 2014
Modifié(e) : per isakson le 15 Sep 2014
Hi, hoping someone can help.
I have code that when run within a chosen directory, pops up a dialog box to choose file, to open through uigetfile and it runs through the code and outputs what I need to a .txt file and saves within the same directory. This is only for 1 file though, what I would like to do is for this to run through all the files in a directory in an automated fashion. I have tried a few things but I really can't get this to work and it seems to be due to how I'm using xlsread at the start.
I am using the following to read the data from the file:
[num text raw] = xlsread(uigetfile('*.extension'));
This allows me to easily use things like this to read off various values from headers etc I need:
date = num(3:2);
fileName = text(14:56);
I obviously don't want uigetfile popping up for every file to open but when I remove this I get errors complaining that xlsread can't use wildcards etc.
How can I get it so that my code cycles through all the files, runs my code then stops? I think it's something along these lines (Pseudocode):
% Get directory name
% get filename
% get number of relevant files within directory
% for i=1:number of relevant files
% run my code
% end
I just can't quite get it. Can someone help?

Réponse acceptée

per isakson
per isakson le 12 Sep 2014
Try
sad = transpose( dir( '*.extension' ) );
for file = sad
disp( file.name )
end
and see
  2 commentaires
Ross
Ross le 15 Sep 2014
Modifié(e) : Ross le 15 Sep 2014
I think I'm close with this however when I use this code:
sad = transpose( dir( '*.extension' ) );
for file = sad
disp( file.name )
[num text raw] = xlsread(sad);
my code;
end
I get this error:
Error using xlsread
Filename must be a string.
I'm assuming I need to convert the filename to a string? But I'm not sure how using the transpose function.
Ross
Ross le 15 Sep 2014
Modifié(e) : per isakson le 15 Sep 2014
Ah! I figured it out!
I used this, the structures thing was confusing me:
sad = transpose( dir( '*.extension' ) );
for file = sad
disp( file.name )
FileName = (file.name)
[num text raw] = xlsread(FileName)
mycode
end
And this gives the desired action! Thanks for your help. :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by