我应该如何在十六进制格式的文本上写一个矩阵?

时间:2013-10-07 07:48:24

标签: matlab file-handling printf

我有一个矩阵,说:

M = [1000 1350;2000 2040;3000 1400];

我希望将这个矩阵写成十六进制格式的文本文件,如下所示:

0x000003e8 0x00000bb8  
0x000007d0 0x000007f8   
0x00000bb8 0x00000578  

我考虑使用函数dec2hex,但它非常慢且效率低下。它还将输出作为字符串给出,我不知道如何重构我的上述格式。

当从文本文件中读取时,MATLAB直接将十六进制数转换为十进制数。使用函数fscanf(fid,'%x')

我们可以在编写矩阵时做同样的事情吗?

2 个答案:

答案 0 :(得分:3)

您可以使用%x格式字符串。为了演示,请参阅下面的sprintf示例。如果要写入文件,则必须使用fprintf

M = [1000 1350;2000 2040;3000 1400];
str = sprintf('0x%08x\t0x%08x\n', M')

这导致

str =

0x000003e8  0x00000546
0x000007d0  0x000007f8
0x00000bb8  0x00000578

答案 1 :(得分:1)

您可以将num2str与格式字符串一起使用:

str = num2str(M, '0x%08x ');

返回

str =

0x000003e8 0x00000546
0x000007d0 0x000007f8
0x00000bb8 0x00000578

使用此代替sprintf,您不需要为每列重复格式字符串。