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

分类: MATLAB |
工程上面遇到将一个Excel文档中的十进制数据转换为十六进制,经过一个多小时的摸索,终于搞定!(其实说白了就是将十进制大矩阵转换为十六进制大矩阵)
最终实现是用MATLAB实现的,不得不说MATLAB还是相当强大的!
其实就五行程序,但是花了一个多小时的时间才写出来,这就是程序员的悲惨生活啊!
下面附上这五行程序并对这五行程序进行一定的讲解(在我看来还是有一定难度的)。
(1)AA = xlsread('123.xls');
(2)BB = dec2hex(AA,2);
(3)CC = cellstr(BB);
(4)DD = reshape (CC,[13,7]);
(5)xlswrite('789.xls',DD);
最终实现的结果:
如果只是利用这个结果,直接拷贝上面的五行代码就可以了,如果想要了解具体的代码,可以看下面的解析。
(1)AA = xlsread('123.xls');
这一句是将原始的十进制矩阵读进来,以备处理。注:123.xls文件中的矩阵为13*7。数据类型为double。这在说明数据类型和矩阵维度很有必要!
(2)BB = 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)
(4)DD = reshape (CC,[13,7]);
这句话就是将数组纬数进行改变。这句话实现的结果就是91*1矩阵变成为13*7的矩阵。
(5)xlswrite('789.xls',DD);
这句话就是将得到的矩阵写入到Excel表中,免得自己进行复制。
完~~~