Can anyone explain me what this line do strcmp(D(i).name,'..')?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to read the number of images in a folder the following code. Can anyone explain this?
if not(strcmp(D(i).name,'.')|strcmp(D(i).name,'..')|strcmp(D(i).name,'Thumbs.db'))
imgcount = imgcount + 1; % Number of all images in the training database
end
0 commentaires
Réponse acceptée
Guillaume
le 8 Déc 2014
The code is obviously meant to be in a loop and the D most likely originates from a dir command. Its purpose is to count the number of files in the directory other than 'thumbs.db' and the '.' and '..' directories that matlab stupidly returns.
It assumes that all files in the directory are images and that there are no subdirectories. Otherwise imgcount will be wrong.
It's also not very well written. There is no need for a loop. You could replace:
for i = 1:numel(D) %I assume that's what it looks like
if not(strcmp(D(i).name,'.')|strcmp(D(i).name,'..')|strcmp(D(i).name,'Thumbs.db'))
imgcount = imgcount + 1; % Number of all images in the training database
end
end
with:
filenames = {D.name};
imgcount = sum(~strcmp(filenames, '.') & ~strcmp(filenames, '..') & ~strcmp(filenames, 'thumbs.db'));
0 commentaires
Plus de réponses (1)
Henrik
le 8 Déc 2014
strcmp(D(i).name,'.'
this compares the string in D(i).name to '.'. If the string is indeed '.', it returns TRUE (in MATLAB, this is the same as 1).
Similarly for the two other strcmp: if the string is equal to '..' or 'Thumbs.db' it returns true.
The | between the three checks means either. So
strcmp(D(i).name,'.')|strcmp(D(i).name,'..')|strcmp(D(i).name,'Thumbs.db')
is true if the string in D(i).name is either '.', '..' or 'Thumbs.db'.
The not in front of all this means that imcount will increase by 1 if the string in D(i).name is neither '.', '..' nor 'Thumbs.db'
3 commentaires
Henrik
le 8 Déc 2014
So the imgcounter is actually just counting the number of files in the directory?
Voir également
Catégories
En savoir plus sur Introduction to Installation and Licensing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!