读取16进制数据文件
函数介绍:FileName是数据文件名全称(只针对txt文件类型),返回值A为读取到的16进制转化为10进制值的矩阵。
处理细节:数据允许有空行,用换行符作为每一行的间断,每一行元素可以不一样,缺失的用值0填充。不做其他差错处理,如包含非法字符等。
function A = getHexData(FileName)
fid = fopen(FileName, 'r'); % 打开文件
i = 0;
while ~feof(fid) % 一直读取到文件末尾
s = fgetl(fid); % 读取一行数据
if isempty(s), continue, end % 空行跳过
i = i + 1;
sline = sscanf(s, '%x', size(s, 2))'; % 得到一行的数据值
for j = 1 : size(sline, 2)
A(i, j) = sline(j); % 得到数据
end
end
fclose(fid); % 关闭文件
end
原理补充:此处sscanf的第三个参数是读取的最大元素数,我用size(s, 2),此值肯定不小于总的数据数,即相当于读取所有数据。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -