如何使用matlab将16进制数转化为16位的2进制数之后忽略2进制数的最高两位,再转成带符号的十进制数呢

2025-04-06 23:18:59
推荐回答(1个)
回答1:

clear
fid=fopen('文件名','r');
a=fscanf(fid,'%s');
fclose(fid);
b=reshape(a,[4,length(a)/4])';
c=uint16(hex2dec(b));
x=dec2bin(c);
s=bitget(c,14);
c=bitset(c,15,s);
c=bitset(c,16,s);
out=zeros(size(c));
for ii=1:size(c,1);
if s(ii)
out(ii)=double(c(ii))-2^16;
else
out(ii)=double(c(ii));
end
end

out是最后的输出