2013-07-08 23 views
0

我有一個文本文件,我需要閱讀的具有不同數目的十六進制數據列取決於行。我試圖讀取它,然後操縱十六進制,但我似乎可以找到一個很好的方式來讀取文件。我想在十六進制之前的前五列(它們總是在那裏)讀取爲字符串,然後最終將十六進制操作爲十進制和繪圖。儘管每行中的十六進制字數不同。我試圖使用文本掃描,但可以弄清楚如何做到這一點。任何幫助將不勝感激。如何讀取matlab中具有可變十六進制值列的文本文件?

下面是一些示例數據:

X 0:47950 0X ---- 001:00:07:56.63 16-R-08-04爲0x8000 0×0012 0×0000

X 0:136994 0x- --- 001:00:13:14.35 16-R-07-04 0x8000 0x0012 0x0000 0x0000

x 0:532637 0x ---- 001:00:40:29.86 15-R-08-04 0x8000 0x0012 0x0000 0x0000 0x0000 0x0000

x 0:532637 0x ---- 001:00:40:29.86 16-R-04-04 0x8000 0x0012 0x0000 0x0000 0x0000

x 0:47950 0x ---- 001:00:07:56.63 16-R-08-04 0x8000 0x0012 0x0000

回答

1

這可能會讓你指出正確的方向。

根據文件的大小,帶字符串操作的fgetl()可能非常慢,但它可能會作爲第一遍。

fid = fopen('hex.txt'); 

approxNumLines = 10; % Pre-allocate for speed 
realNumLines = 0; % Counter variable 

resultingCellArray = cell(approxNumLines,1); % Pre-allocate for speed 


line = fgetl(fid); % Get the first line 
while line ~= -1 
    realNumLines = realNumLines + 1; 
    resultingCellArray{realNumLines} = strsplit(line); 
    line = fgetl(fid); 
end 

resultingCellArray = resultingCellArray(1:realNumLines); 

你將不得不做一些細胞爲十六進制後這個矩陣運算,但應該是相當直截了當取決於你到底怎麼想的那樣。

相關問題