如何在matlab中读取具有可变十六进制值列的文本文件?
我有一个需要读入的文本文件,根据行的不同,它有不同数量的十六进制数据列。我试图读入所有内容,然后操纵十六进制,但我似乎找到了读入文件的好方法。我想把十六进制之前的前五列(它们总是在那里)读作字符串,然后最终将十六进制转换成十进制并打印出来。不过,每行中的十六进制单词数是不同的。我正在尝试使用文本扫描,但我能想出如何做到这一点。任何帮助都将不胜感激 以下是一些示例数据: 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如何在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
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);
在此之后,您将不得不执行一些从单元到十六进制到矩阵的操作,但这应该是非常直接的,具体取决于您希望它的方式