Matlab fscanf字符串读取异常行为

问题描述 投票:2回答:1

我正在尝试使用fscanf在matlab中读取文件。该文件是微控制器中某些存储区的转储。我从IDE导出了它,编码为'ISO-8859-1'。

这是我在matlab中打开文件时的一行:

25 08 00 00 7E 05 00 00 08 08 00 00 85 05 00 00 0D 06 00 00 76 06 00 00 04 0C 00 00 FB 07 00 00
3A 06 00 00 0C 06 00 00 01 06 00 00 0C 06 00 00 C3 05 00 00 EF 05 00 00 05 06 00 00 FF 05 00 00
EF 05 00 00 FB 05 00 00 89 08 00 00 74 06 00 00 0D 06 00 00 FC 05 00 00 10 06 00 00 C3 05 00 00
C5 05 00 00 F2 05 00 00 81 05 00 00 1C 06 00 00 85 05 00 00 F0 05 00 00 C2 05 00 00 5F 05 00 00

([here完整文件)

这是正确的:我在IDE中看到的数字相同。我要做的是:

fileID = fopen('testdataadc.txt','r','n','ISO-8859-1');
% Read all characters excluding white spaces.
vecDump = fscanf(fileID, '%s' ,[25 Inf]);
fclose(fileID);

其中'n'是本机字节序:您的系统字节顺序(默认)。现在是vecDump中的第一列(它是25x64 char变量):

25060000F5080000F8070000F0050000E5050000FC060000EF06000000070000

格式是我期望的格式,但是值是错误的。例如:

         25 08 00 00 becomes 25 06 00 00
         7E 05 00 00 becomes F5 08 00 00

我在这里做错了什么?

matlab file scanf fopen
1个回答
0
投票

fscanf的输出是25x64字符矩阵。来自文件的数据按列填充该矩阵。如果查看第一列,将看到:“ 250800007E05”,等等。由于文件的每一行都有64个非空格字符,因此应将文件读入64xN矩阵,然后转置它:

© www.soinside.com 2019 - 2024. All rights reserved.