How to find the maximum index in a struct
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
EK
el 23 de Abr. de 2021
Comentada: Stephen23
el 23 de Abr. de 2021
I need to read in an unknown number of data files from the current working directory. Each data file has a filename that contains the word "metrics".
To do this, I am using the following to read these into a struct:
>> F = dir("*metrics*")
This works. I get the following:
F =
3×1 struct array with fields:
name
folder
date
bytes
isdir
datenum
I happen to know that in this test directory, there are 3 files that match this pattern, and in the above return I can see that F is a 3x1 struct array.
Accessing F(1).name gives the name of the first file, F(2).name gives the name of the second and so on.
The problem I have is that in the live directory (not the test one) there can be an unknown number of files, and I need to process each one of them in turn.
I though that I could use 'size' to get the dimensions of the struct array (as returned in the above), but I get this instead:
>> size F
ans =
1 1
So, the quesiton is, how do I figure out how many filename "entries" there are in this struct F, so that I can use a loop to process each index in turn?
I was planning on doing something like this:
for index = 1:numberOfFiles
myFileProcess(F(index))
end
Please note that I am not asking about how to access individual elements of the entries in the struct (like b = F(2).bytes) - I need to know how many things there are in this struct (i.e filenames returned from dir).
Thanks!
1 comentario
Stephen23
el 23 de Abr. de 2021
Note that
size F
is equivalent to
size('F')
which measures the size of the scalar character 'F' (note that strings are colored purple). Compare:
size(F) % what you should do
Respuesta aceptada
Star Strider
el 23 de Abr. de 2021
Editada: Star Strider
el 23 de Abr. de 2021
Try something like this instead:
Fsize = size(F)
The function form is likely to give the result you want.
EDIT — (23 Apr 2021 at 4:30)
If you only want to know how many files there are in ‘F’:
Flen = numel(F)
works.
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures 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!