-1

我想阅读 MATLAB 中一个文件夹中的一些文本文件,计算每个文件中的行数,最后总结这些数字。如果有人指导我如何在 MATLAB 中进行操作,我将不胜感激?

4

2 回答 2

2

要获取所有文本文件名,请使用dir(*.txt) http://www.mathworks.com/help/matlab/ref/dir.html

要计算所有行,请参阅此答案:Matlab 中有没有一种方法可以确定文件中的行数,而无需遍历每一行?

于 2013-04-19T12:37:22.713 回答
2

Matlab 真的不适合那个。底层操作系统通常在这方面要好得多,因此,使用系统调用。

从这个问题改写我原来的答案(从那时起我学到了一些新技巧:)

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

请注意,这将正常工作,除了

  • 如果您在 Linux/max 上并且total在当前目录中有一个名为的文件:)
  • Windows 版本有时会误算一些文件 1 或 2 行,我不知道为什么...

我很确定有一个更简洁的单行解决方案来解析 linux 结果字符串;当前的混乱是由于regexp(..., 'tokens')返回了一个单元格,这对于当前上下文来说非常不方便(老实说,我还没有找到很多方便的上下文),所以这必须通过cellfun.

但是哦,好吧,它认为在大多数情况下它应该可以解决问题。

于 2013-04-19T13:51:43.853 回答