文件的快速閱讀我一種具有fscanf
和閱讀與結構化數據文件的時間表現的沮喪。我想讀一個.txt文件,其中每行有三項:DOUBLE雙長雙,我只是想讀第N個條目。不幸的是,fscanf
很慢。你知道更快的方法嗎?Matlab的:有許多行(%d%d%ld)的
順便說一句,我知道的幾個主題關於這個主題在這裏,例如this question。但是,答案在我的情況下沒有幫助,因爲我已經使用fscanf
。
我的代碼是:
formatSpec='%d %d %ld'; % important: last one is long-double to support 64bit values!
sizeA=[3 100000];
file1=fopen('file1.txt','r');
[content,cc]=fscanf(file1,formatSpec,sizeA);
fclose(file1);
你知道有更巧妙的構思與給定結構讀取文件的N行?謝謝!
編輯:的file1.txt
的filecontent看起來像這樣:
1 1 204378259709308
0 1 204378259782523
1 1 204378260105693
3 1 204378260381676
3 1 204378260854931
1 1 204378261349990
1 1 204378262189528
0 1 204378263067715
1 1 204378263301204
1 1 204378263676471
1 1 204378263771064
1 1 204378264565420
0 1 204378264608240
0 1 204378264973698
...
3 1 205260543966542
所以basicly: A [空間] [空間] B [空間]Ç 與A和B是[0,9]並且C是64位整數
'%D'是小數,而不是增加一倍。讀取前N個字符很慢,因爲解析器必須解析整行才能找到EOL。使用matfiles或類似的會快得多。你能上傳一個例子嗎?如果所有生產線具有相同的長度或類似長度,則可以提高速度。 – Daniel
我添加了一個文件的例子。最後一個條目的字符數很可能保持不變。可以幫助嗎? – NicoDean
您是否嘗試過'sizeA = 100000'?在閱讀格式中已經有3個值被讀取,我認爲你不需要在'fscanf'中重複這些信息。否則,您可能會讀取比您需要的更多值,並迫使Matlab以非matlab優化的方式組織它們。 – Hoki