How to find the maximum index in a struct

3 Ansichten (letzte 30 Tage)
EK
EK am 23 Apr. 2021
Kommentiert: Stephen23 am 23 Apr. 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 Kommentar
Stephen23
Stephen23 am 23 Apr. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 23 Apr. 2021
Bearbeitet: Star Strider am 23 Apr. 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 Kommentare
EK
EK am 23 Apr. 2021
Thanks!
Flen = numel(F)
is exactly what I was looking for.
Appreciate the help.
Star Strider
Star Strider am 23 Apr. 2021
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by