加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用MATLAB将十进制矩阵转换为十六进制矩阵

(2017-07-30 16:48:37)
分类: MATLAB

工程上面遇到将一个Excel文档中的十进制数据转换为十六进制,经过一个多小时的摸索,终于搞定!(其实说白了就是将十进制大矩阵转换为十六进制大矩阵)

最终实现是用MATLAB实现的,不得不说MATLAB还是相当强大的!

其实就五行程序,但是花了一个多小时的时间才写出来,这就是程序员的悲惨生活啊!

下面附上这五行程序并对这五行程序进行一定的讲解(在我看来还是有一定难度的)。

1AA = xlsread('123.xls');

2BB = dec2hex(AA,2);

3CC = cellstr(BB);

4DD = reshape (CC,[13,7]);

5xlswrite('789.xls',DD);

最终实现的结果:

 http://s15/mw690/006F6HhWzy7d35tTP8q8e&690

如果只是利用这个结果,直接拷贝上面的五行代码就可以了,如果想要了解具体的代码,可以看下面的解析。

1AA = xlsread('123.xls');

这一句是将原始的十进制矩阵读进来,以备处理。注:123.xls文件中的矩阵为13*7。数据类型为double这在说明数据类型和矩阵维度很有必要!

2BB = dec2hex(AA,2);

这一句是将十进制AA转换为十六进制BB,后面的2表示转换成的十六进制数占2位。

这一句的实现的结果是91*2,数据类型为char.而我们要实现的是double型和13*7维度矩阵。所以下面这句话就至关重要了。

(3)CC = cellstr(BB);

这一句非常重要,是整个程序的核心。这句话的功能是将字符串类型的数组转换成单元格类型的数组。结果就是数组为91*1,数据类型为cell。(cell类型对我们也是可以直接使用的,当然可以在使用str2double转换为double类型,但是这个将不能识别ABCDEF,所以结果总包含ABCDEF的结果全是NaN

4DD = reshape (CC,[13,7]);

这句话就是将数组纬数进行改变。这句话实现的结果就是91*1矩阵变成为13*7的矩阵。

5xlswrite('789.xls',DD);

这句话就是将得到的矩阵写入到Excel表中,免得自己进行复制。     

~~~      2017.7.30


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有