matlab 判断文件有多少行,在matlab中有没有办法确定文件中的行数,而不是循环遍历每一行?... -凯发k8官方网
我喜欢使用以下代码完成这项任务
fid = fopen('sometextfile.txt', 'rb');
%# get file size.
fseek(fid, 0, 'eof');
filesize = ftell(fid);
frewind(fid);
%# read the whole file.
data = fread(fid, filesize, 'uint8');
%# count number of line-feeds and increase by one.
numlines = sum(data == 10) 1;
fclose(fid);
如果你有足够的内存能够一次读取整个文件,这是非常快的。它应该适用于windows和linux风格的线路结束。
编辑:我测量了迄今提供的答案的性能。以下是确定包含100万个双精度值(每行一个值)的文本文件行数的结果。平均10次尝试
author mean time - standard deviation (s)
------------------------------------------------------
rody oldenhuis 0.3189 - 0.0314
edric (2) 0.3282 - 0.0248
mehrwolf 0.4075 - 0.0178
jonas 1.0813 - 0.0665
edric (1) 26.8825 - 0.6790
使用perl和读取所有文件作为二进制数据的方法最快。我不会惊讶,如果perl内部也读取大块的文件,而不是逐行循环(只是一个猜测,不知道任何关于perl)。
使用一个简单的fgetl() – 循环比其他方法慢25-75倍。
编辑2:包括edric的第二种方法,它比perl凯发k8官方网的解决方案快得多,与之相当。
总结
以上是凯发k8官方网为你收集整理的matlab 判断文件有多少行,在matlab中有没有办法确定文件中的行数,而不是循环遍历每一行?...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: 用matlab定义2020年元旦是星期三