我有一个我需要阅读的文本文件,根据行有不同数量的十六进制数据列。我试图读取它然后操作十六进制,但我似乎找到了一个很好的方法来读取文件。我想读取十六进制之前的前五列(那些将永远在那里)作为字符串,然后最终将十六进制操作为十进制和绘图。但每行中的十六进制字数不同。我正在尝试使用文本扫描,但可以弄清楚如何做到这一点。任何帮助将不胜感激。
以下是一些示例数据:
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
答案 0 :(得分: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);
在此之后你将不得不做一些单元格到十六进制到矩阵的操作,但这应该是非常简单的,具体取决于你想要的方式。