2

我有一个矩阵,说:

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

我希望将此矩阵以十六进制格式写入文本文件,如下所示:

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

我考虑过使用该功能dec2hex,但它非常缓慢且效率低下。它还将输出作为字符串提供给我,我不知道如何为上述所需格式重新构造。

MATlab 在读取文本文件时直接将十六进制数转换为十进制数,例如。使用功能时fscanf(fid,'%x')

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

4

2 回答 2

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
于 2013-10-07T08:05:06.010 回答
1

您可以使用num2str格式字符串:

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

返回

str =

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

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

于 2013-10-07T08:49:56.407 回答