我想阅读 MATLAB 中一个文件夹中的一些文本文件,计算每个文件中的行数,最后总结这些数字。如果有人指导我如何在 MATLAB 中进行操作,我将不胜感激?
问问题
610 次
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 回答