Can anyone explain me what this line do strcmp(D(i).name,'..')?
    7 views (last 30 days)
  
       Show older comments
    
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 Comments
Accepted Answer
  Guillaume
      
      
 on 8 Dec 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 Comments
More Answers (1)
  Henrik
      
 on 8 Dec 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 Comments
  Henrik
      
 on 8 Dec 2014
				So the imgcounter is actually just counting the number of files in the directory?
See Also
Categories
				Find more on Introduction to Installation and Licensing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!