youngforever

转自:http://hsanyi.blog.163.com/blog/static/55022325201261524922278/

在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 
得到
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) %画图


分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-04-18
  • 2022-12-23
  • 2022-01-09
  • 2021-12-02
  • 2022-01-02
  • 2022-02-02
  • 2021-11-26
猜你喜欢
  • 2021-09-12
  • 2021-12-04
  • 2022-12-23
  • 2022-02-26
  • 2021-12-01
  • 2022-12-23
相关资源
相似解决方案