2015-10-07 35 views
1

我想從長度約爲1e6的txt文件導入數據到matlab。用不同的線長處理很長的日誌txt文件用MATLAB

文本如下:

[04 05 11 12] jiffies=100 
[04 06 15 09] jiffies=3455 
. 
. 
. 
[00 02 07 07] jiffies=111200 

我已經設法不使用循環以提取前兩個數字(我需要);

現在我希望「的jiffies =#」後只讀數量,如果我試圖用同樣的方法

textscan(fid,'%s','delimiter', 'jiffies=') 

,但它不工作,任何方法,而不使用循環?

回答

4

您可以使用星號*跳過值。 在你的文件的所有數據的完整格式化字符串是

'[%d %d %d %d] jiffies=%d' 

跳過所有的數字在前,簡單地說%d之間的明星。

C = textscan(fid,'[%*d %*d %*d %*d] jiffies=%d'); 

如果你想一次導入所有數據返回

C{1} 

ans = 

     100 
     3455 
     111200 
0

,你可以打開導入工具這個文件:

uiimport(filename); 

這將正確刪除括號和'jiffies ='文本,並且可以返回所有數字的數字數組。您還可以從導入工具生成代碼(單擊導入選擇下拉菜單/生成腳本或函數)。這可能證明比直接使用textscan更好地處理文件中的任何錯誤。