如何在matlab中读取具有可变十六进制值列的文本文件?

如何在matlab中读取具有可变十六进制值列的文本文件?,matlab,text,hex,large-files,textscan,Matlab,Text,Hex,Large Files,Textscan,我有一个需要读入的文本文件,根据行的不同,它有不同数量的十六进制数据列。我试图读入所有内容,然后操纵十六进制,但我似乎找到了读入文件的好方法。我想把十六进制之前的前五列(它们总是在那里)读作字符串,然后最终将十六进制转换成十进制并打印出来。不过,每行中的十六进制单词数是不同的。我正在尝试使用文本扫描,但我能想出如何做到这一点。任何帮助都将不胜感激 以下是一些示例数据: x 0:47950 0x----001:00:07:56.63 16-R-08-04 0x8000 0x0012 0x0000

我有一个需要读入的文本文件,根据行的不同,它有不同数量的十六进制数据列。我试图读入所有内容,然后操纵十六进制,但我似乎找到了读入文件的好方法。我想把十六进制之前的前五列(它们总是在那里)读作字符串,然后最终将十六进制转换成十进制并打印出来。不过,每行中的十六进制单词数是不同的。我正在尝试使用文本扫描,但我能想出如何做到这一点。任何帮助都将不胜感激

以下是一些示例数据:

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

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


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

这可能会为您指明正确的方向

根据文件的大小,
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);
在此之后,您将不得不执行一些从单元到十六进制到矩阵的操作,但这应该是非常直接的,具体取决于您希望它的方式