Run code on multiple files within a directory?

4 次查看(过去 30 天)
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?

采纳的回答

per isakson
per isakson 2014-9-12
Try
sad = transpose( dir( '*.extension' ) );
for file = sad
disp( file.name )
end
and see
  2 个评论
Ross
Ross 2014-9-15
编辑:Ross 2014-9-15
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 2014-9-15
编辑:per isakson 2014-9-15
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. :)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by