Read multiple xls files in a for loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello! I was trying to get 3 excel files to read through a for loop and do a simple function. The dates (mm/dd/yy) read into matlab code and I'd like to spit them back out as new variables that translate them back into dates via the datestr function. I know its my coding that is the problem and I've tried manipulating it several times with no success so any suggestions would be greatly appreciated! Thanks!
source_dir = '/Users/student/Documents/MATLAB/RAWS Station Data';
dest_dir = '/Users/student/Documents/MATLAB/RAWS Results';
source_files = dir(fullfile(source_dir, '*.xls'));
n=length(source_files);
i=n;
for i=1:n
a= xlsread(source_files);
d = a(:,1);
ds(i) = datestr(d,2);
end
0 comentarios
Respuesta aceptada
Jan
el 4 de Jul. de 2013
Please use the debugger to find out more details:
dbstop if error
Then run the program until it stops and check:
size(datestr(d, 2))
size(ds)
Do the number of elements match?
4 comentarios
Jan
el 10 de Jul. de 2013
Now we see, that there is an error in the "line 29: n=length(data)", but what is the error message? And This line does not occur in the posted code.
It is not useful to declare the variable used as a loop counter before:
%Omit this: i=n; % defines variable 'i' for for loop
for i = 1:n
...
Inside the loop, i goes from 1 to n, so you do not have to check "if i <= n".
Más respuestas (1)
Evan
el 3 de Jul. de 2013
Editada: Evan
el 3 de Jul. de 2013
Is this any better?
source_dir = '/Users/student/Documents/MATLAB/RAWS Station Data';
dest_dir = '/Users/student/Documents/MATLAB/RAWS Results';
source_files = dir(fullfile(source_dir, '*.xls'));
n=length(source_files);
for i=1:n
a = xlsread(source_files(i).name);
d = a(:,1);
ds(i) = datestr(d,2);
end
Your problem looks to be caused by the fact that source_files is an nx1 struct, where n is the number of .xlsx files in your directory. To read in each .xlsx file one at a time, you have to loop through that struct, accessing its "name" field in your call to xlsread.
5 comentarios
Evan
el 3 de Jul. de 2013
Hmmm. Interesting. Just out of curiosity, is this a script or a function? If it's just a script, are you calling clear before running again?
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!