在MATLAB中实现⼗进制和⼗六进制数的转化⽅法转⾃:
在MATLAB中算出了⼀个⼗进制的数组(有⼏百个单元),如何把这些⼗进制的书转化为16进制呢?
如果是正数直接使⽤dec2hex函数。如果是负数,将其转换为反码再⽤dec2hex。
转换规则:对N位⼆进制表⽰的有符号⼗进制数,其数值范围为-2^(N-1)~2^(N-1)-1,对正数n,对应⼗六进制数为dec2hex(n);对负数n,对应⼗六进制数为dec2hex(2^(N+1)+n)。
例:a=[-1 10 17 -10 9],需转换为⼀个字节的⼗六进制表达。
需将其中的负数转换为相应的反码,n = n + 256
使⽤ a(find(a<0))=a(find(a<0))+256
得到
matlab二进制字符串转数组
a =
255    10    17  246    9
再⽤
dec2hex(a)
得到
ans =
FF
0A
11
F6
09
%%%%%%16进制转10进制转化⽅法⼀%%%%%%%%%%%%
a=textread('c:\a.txt','%s')';%以字符形式打开⽂件
alpha=hex2dec(a)'; %16进制转化为10进制数,存⼊alpha矩阵
%%%%%%%16进制转10进制转化⽅法⼆%%%%%%%%%%%
[wenjian_ming,lujing_ming] = uigetfile('c:\a.txt','导⼊数据');
fid=fopen(strcat(lujing_ming,wenjian_ming),'r');
data=[];
while ~feof(fid)
m=fscanf(fid,'%3x',[1 inf]);
data=[data;m];        %将读出的数据存⼊data矩阵中
end
alpha=data;
%%%%%%%保存⽂件⽅法⼀%%%%%%%%%%%%%%
dlmwrite('c:\b.txt',alpha,'delimiter', ' ') %将得出数据存⼊新的b.txt⽂档
%%%%%%%保存⽂件⽅法⼆%%%%%%%%%%%%%%
fid=fopen('c:\d.txt','w');
fprintf(fid,'%d ',alpha');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha2=alpha(1:2:length(alpha)-mod(length(alpha)+1,2)); %将奇数元素提取出来
dlmwrite('c:\c.txt',alpha2,'delimiter', ' ') %将得出数据存⼊新的c.txt⽂档
%%%%%%%画图%%%%%%%%%%%%%%
plot(1:length(alpha2),alpha2) %画图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。