Borrar filtros
Borrar filtros

How do I use an array of files?

15 visualizaciones (últimos 30 días)
Daniel Jednorozec
Daniel Jednorozec el 26 de Mzo. de 2012
I have this code below which I am trying to make an array of files to use in a loop so I don't have to rewrite the same code over and over again, but when I use this method the array only pulls the first letter of the file name making it impossible to access that file. The fname array is the one I am trying to specify, but when I make it a string array it does not recognize the names as a file. Thanks in advance.
L = 50.8; %Support Span as measured in mm.
b = 24.75; %Width of rock as measured in mm.
d = 10.2; %Thickness of rock as measured in mm.
fname = ['Specimen_RawData_1.xls','Specimen_RawData_2.xls',...
'Specimen_RawData_3.xls','Specimen_RawData_4.xls',...
'Specimen_RawData_5.xls','Specimen_RawData_6.xls',...
'Specimen_RawData_7.xls','Specimen_RawData_8.xls',...
'Specimen_RawData_9.xls','Specimen_RawData_10.xls',...
'Specimen_RawData_11.xls','Specimen_RawData_12.xls',...
'Specimen_RawData_13.xls','Specimen_RawData_14.xls',...
'Specimen_RawData_15.xls','Specimen_RawData_16.xls',...
'Specimen_RawData_17.xls','Specimen_RawData_18.xls',...
'Specimen_RawData_19.xls','Specimen_RawData_20.xls',...
'Specimen_RawData_21.xls','Specimen_RawData_22.xls',...
'Specimen_RawData_23.xls','Specimen_RawData_24.xls',...
'Specimen_RawData_25.xls'];
for i = 1:25
a = xlsread(fname(i));
x = a(:,3);
y = a(:,4);
[ra,ca,va] = find(y > i);
ta = ra(1);
[rb,cb,vb] = find(y > i - 10);
tb = rb(1);
m = ((y(ta)-y(tb))/(x(ta)-x(tb)))/1e3
E = ((L^3)*m)/(4*b*d^3)
n = i;
plot(n,E,'*')
end

Respuesta aceptada

Oleg Komarov
Oleg Komarov el 26 de Mzo. de 2012
Implement these changes:
% Fname as a cell array of strings
fname = {'Specimen_RawData_1.xls',...
...}
% note the curly brackets
a = xlsread(fname{i});
  1 comentario
Daniel Jednorozec
Daniel Jednorozec el 26 de Mzo. de 2012
Wow, thank you so much. What a difference brackets make.

Iniciar sesión para comentar.

Más respuestas (1)

Matt Tearle
Matt Tearle el 26 de Mzo. de 2012
Strings in MATLAB are treated as a matrix of characters. Hence,
fname = ['Specimen_RawData_1.xls','Specimen_RawData_2.xls']
will make a 1-by-44 character array containing the string 'Specimen_RawData_1.xlsSpecimen_RawData_2.xls' (because you concatenated the two strings (char arrays) together horizontally).
So first fix is to concatenate them vertically into a matrix of characters:
fname = ['Specimen_RawData_1.xls';'Specimen_RawData_2.xls']
(Note the ; instead of ,). Now you have a matrix of two rows, one per string. To index into each filename in the loop, then, use
a = xlsread(fname(i,:));
Now, if your filenames have different lengths, you will not be able to concatenate vertically (all rows of a matrix must have the same number of columns).
So another approach is to use a cell array of strings:
fname = {'Specimen_RawData_1.xls','Specimen_RawData_2.xls'}
Then use cell indexing in the loop:
a = xlsread(fname{i});
Finally, you may want to investigate the functions ls and dir. You may also want the cellstr function for converting a char array to a cell array of strings.

Categorías

Más información sobre Cell Arrays 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!

Translated by