2017-02-22 131 views
0

我有一個文本文件(5列「\ t」的分離)這是被其他軟件寫入。我需要從文件中讀取數據並進行一些計算。是否有讀取添加到文件中的新行,並對其進行處理,然後再重複每一行新行。只要它能完成工作,我不介意有點拖延。閱讀變化的txt文件的matlab

我的想法是開始讀取一行文件中的行,直到文件的末尾,那麼它會從它最後停止,直到文件的新的終端...等讀取。 這可以在Matlab中完成嗎?我可以指定文件閱讀的起始行嗎?我是否也可以更新文件結束點?

爲了阻止循環在EOF點突破,我想我應該把我的循環,通過時間或其他任何東西來控制,而應該在每次迭代結束時檢查EOF。

我大部分時間用Matlab的工作,但如果有更好的選擇用於此目的(即我可以合理地學習)請隨時來指導我。

EDIT1:我已經嘗試使用dlmread如你所說,當我看到當我改變R1在讀取文件甚至正確的循環之外,並與其他軟件更新文本文件。但是,當我把它放在一個循環中時,我得到這個錯誤: 使用dlmread時出錯(第143行) 空格式字符串在文件末尾不受支持。

這裏是我的代碼多次閱讀:

clear all 
x=0; 
R1=0; C1=0; 
while(x<10) 

    M = dlmread('tst_4.txt','\t',R1,C1); 
    R1=length(M); 
    x=x+1; 
end 

感謝

+0

你可以嘗試使用'dlmread'並指定範圍讀取基於文件的最後一次讀取數據。 – Nemesis

回答

0

您可以使用dlmread(filename,delimiter,R1,C1)。其中R1和C1分別是行和列的偏移量。通過將行偏移設置爲您讀取的最後一行,您可以閱讀文件內容,但不包括您已經閱讀的內容。

+0

非常感謝你,我試了一下沒有一個循環(改變R1甚至是時間),它工作,當我把它放到循環中並運行記錄數據的程序時,它給出了這個錯誤:Error using dlmread(line 143) 文件末尾不支持空格式字符串。我仍然可以讀取文件(當被其他軟件編輯時,在單一的manaual迭代中,R設置爲不同的值。你知道爲什麼會發生這種情況嗎?我將通過放置代碼來編輯文章。謝謝 – Isra

+0

林不知道。稍後我會自己嘗試一下,並告訴你是否可以解決問題。同時,我注意到了你的代碼中可能存在的一個bug,你使用length(M)來獲取矩陣中的行數。然而,長度函數返回最長邊的長度,由於行數隨着時間的增加而增加,所以在開始時可能會有比列更多的列,這意味着在接下來的循環中,R1會對應的列數。嘗試使用大小(M,1),以確保你總是得到行數 – ganninu93

+0

我試過你的建議,我沒有錯誤,我運行它50秒,我能夠閱讀大約4000行,這很好,我的值得關注的是,我看不到工作表上的大小更新,這是否意味着直到閱讀完成才能完成處理? – Isra