16进制的两位数转换不了 matlab_如何用matlab导入16进制数据,并处理?

假设你说的是文本类型的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值