Code covered by the BSD License  

Highlights from
Differential Evolution

Differential Evolution

by

 

03 Feb 2008 (Updated )

Optimization using the evolutionary algorithm of Differential Evolution.

findfiles(varargin)
function fileCell = findfiles(varargin)
%FINDFILES  Recursively search directory for files.
%   FINDFILES returns a cell array with the file names of all files
%   in the current directory and all subdirectories.
%
%   FINDFILES(DIRNAME) returns the file names of all files in the given
%   directory and its subdirectories.
%
%   FINDFILES(DIRNAME, FILESPEC) only returns the file names matching the
%   given file specification (like '*.c' or '*.m').
%
%   FINDFILES(DIRNAME, FILESPEC, 'nonrecursive') searches only in the top
%   directory.
%
%   FINDFILES(DIRNAME, FILESPEC, EXLUDEDIR1, ...) excludes the additional
%   directories from the search.
%
%   Example:
%   fileList = findfiles('.', '*.m');
%
%   Markus Buehren
%   Last modified 21.04.2008 
%
%   See also DIR.

if nargin == 0
  searchPath = '.';
  fileSpec   = '*';
elseif nargin == 1
  searchPath = varargin{1};
  fileSpec   = '*';
else
  searchPath = varargin{1};
  fileSpec   = varargin{2};
end

excludeCell = {};
searchrecursive = true;
for n=3:nargin
  if isequal(varargin{n}, 'nonrecursive')
    searchrecursive = false;
  elseif iscell(varargin{n})
     excludeCell = [excludeCell, varargin{n}]; %#ok
  elseif ischar(varargin{n}) && isdir(varargin{n})
    excludeCell(n+1) = varargin(n); %#ok
  else
    error('Directory not existing or unknown command: %s', varargin{n});
  end
end

searchPath = chompsep(searchPath);
if strcmp(searchPath, '.')
   searchPath = '';
elseif ~exist(searchPath, 'dir')
  error('Directory %s not existing.', searchPath);
end

% initialize cell
fileCell = {};

% search for files in current directory
dirStruct = dir(concatpath(searchPath, fileSpec));
for n=1:length(dirStruct)
  if ~dirStruct(n).isdir
    fileCell(end+1) = {concatpath(searchPath, dirStruct(n).name)}; %#ok
  end
end

% search in subdirectories
if searchrecursive
  excludeCell = [excludeCell, {'.', '..', '.svn'}];
  if isempty(searchPath)
    dirStruct = dir('.');
  else
    dirStruct = dir(searchPath);
  end
  
  for n=1:length(dirStruct)
    if dirStruct(n).isdir
      name = dirStruct(n).name;
      if ~any(strcmp(name, excludeCell))
        fileCell = [fileCell, findfiles(concatpath(searchPath, name), fileSpec)]; %#ok
      end
    end
  end
end

Contact us