我曾承诺对第一行“多一点爱”……“那行不行”。这里是。
有一些有趣的方法来操作单元数组,直到我对这个答案进行了更多研究,我才知道这些方法......特别是使用cellfun()
. 我将分享我学到的东西。
例如,当您有一个文件名元胞数组时
fnames = {files.name};
您可以应用正则表达式来查找符合特定条件的文件(例如“不以点开头”)
crit = '^[^.]+';
% return cell array of results, [] if no match
rxResult = regexp( fnames, crit );
% loop over all cells, set true if regex matched
nodot = (cellfun('isempty', rxResult)==0);
% The `nodot` array is a logical array telling us which are "good" files.
totalGoodFiles = sum(nodot);
现在你可以使用
fileidx = find(~[files.isdir] & nodot);
另一方面,您已经在使用for
循环,因此您可以将测试放在那里(编辑为包括文件数):
fCount=0;
for i = 1:length(fileidx)
if( files(fileidx(i)).name(1) ~= '.')
filename = [dirname, '/', files(fileidx(i)).name];
fCount = fCount+ 1;
fid = fopen(filename, 'r');
end
end
顺便说一句,您可以使用该功能fullfile()
来连接目录和文件名;它了解用于您的操作系统的正确文件分隔符。非常方便 - 比连接 '/' 更好。当您尝试在 Mac 上运行时,它会失败...
更进一步 - 内置常量filesep
将返回正确的文件路径分隔符以在您的平台上使用;有利于使您的代码可移植。