0

我有一个需要读取的文本文件,其中包含不同数量的十六进制数据列,具体取决于行。我正在尝试将其全部读取然后操作十六进制,但我似乎找到了一种读取文件的好方法。我想在十六进制之前的前五列中读取(那些将永远存在)作为字符串,然后最终将十六进制转换为十进制并绘图。但是,每行中的十六进制字数是不同的。我正在尝试使用文本扫描,但可以弄清楚如何做到这一点。任何帮助将不胜感激。

以下是一些示例数据:

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

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

4

1 回答 1

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);

在此之后,您将不得不做一些单元格来十六进制到矩阵运算,但这应该非常简单,具体取决于您想要的方式。

于 2013-07-08T19:14:59.287 回答