我有一个矩阵,说:
M = [1000 1350;2000 2040;3000 1400];
我希望将这个矩阵写成十六进制格式的文本文件,如下所示:
0x000003e8 0x00000bb8
0x000007d0 0x000007f8
0x00000bb8 0x00000578
我考虑使用函数dec2hex
,但它非常慢且效率低下。它还将输出作为字符串给出,我不知道如何重构我的上述格式。
当从文本文件中读取时,MATLAB直接将十六进制数转换为十进制数。使用函数fscanf(fid,'%x')
。
我们可以在编写矩阵时做同样的事情吗?
答案 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
,您不需要为每列重复格式字符串。