matlab 判断文件有多少行,在Matlab中有没有办法确定文件中的行数,而不是循环遍历每一行?...
我喜歡使用以下代碼完成這項任務
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解決方案快得多,與之相當。
總結
以上是生活随笔為你收集整理的matlab 判断文件有多少行,在Matlab中有没有办法确定文件中的行数,而不是循环遍历每一行?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.5.37 my.cnf,
- 下一篇: 用matlab定义2020年元旦是星期三