假设你说的是文本类型的16进制,按数表排列,并且第一列是10进制的时间,代码如下:
function [t,data] = readAscHex(file)
% 输入:
% file — 数据文件,asc编码
% 输出:
% t — 时间
% data - uint8数据
% 编写 : SY
fid = fopen(file);% 打开文件
cellData = textscan(fid,'%f32 %s','headerlines',1,'delimiter','\n');% 读取数据
t = single(cellData{1}); % 第一列是时标
hexData=cellData{2};
fclose(fid); % 关闭文件
idxNAN = find(isnan(t));
t(idxNAN ) =[];
hexData(idxNAN ) = [];
clear('cellData');
hexData = cell2mat(hexData);
hexDataPos = regexp(hexData(2,:),'[0-9,A-F,a-f]'); % 根据第二行学习所有16进制字符位置,当心如果数据中存在不规则行将出错。
hexData = hexData (:,hexDataPos);
nRows = size(hexData,1);
nCols = size(hexData,2)/2;
data = zeros(nRows,nCols,'uint8'); % 预分配输出数据空间,uint8类型
for iCol = 1:nCols
data(:,iCol) = uint8(hex2dec(hexData(:,(2*iCol-1):(2*iCol)))); % 字符型16进制转换成10进制无符号整型
end