我想阅读MATLAB中一个文件夹中的一些文本文件,计算每个文件中的行数,最后总结这些数字。如果有人指导我如何在MATLAB中做到这一点,我将感激不尽?
答案 0 :(得分:2)
要获取所有文本文件名,请使用dir(*.txt)
http://www.mathworks.com/help/matlab/ref/dir.html
要统计所有行,请参阅此答案:Is there a way in Matlab to determine the number of lines in a file without looping through each line?
答案 1 :(得分:2)
Matlab真的不适合这个。底层操作系统通常要好得多,因此,请使用系统调用。
从this question改述我原来的答案(从那以后我学到了一些新技巧)。
if (isunix) %# Linux, mac
[~, result] = system('wc -l *');
numLines = cellfun(@str2double, regexp(result, '([0-9]+) total', 'tokens'))
elseif (ispc) %# Windows
[~, result] = system('find /v /c "&*fake&*" *.*');
numLines = sum(str2double( regexp(result, '[0-9]+', 'match') ))
else %# Some smaller OS
error('Unsupported operating system.');
end
请注意,除
外,这样可以正常工作total
的文件:) 我很确定有一个更简洁的单行解决方案来解析linux结果字符串;当前的混乱是由于regexp(..., 'tokens')
返回单元格的单元格,这对于当前的上下文来说非常不方便(说实话,我还没有找到许多上下文,其中是< / em>方便),所以这必须由cellfun
解决。
但是哦,好吧,它认为它应该在大多数情况下做到这一点。