MATLAB中的单精度浮点到字节数组

时间:2015-03-22 18:49:20

标签: matlab type-conversion

假设我在Matlab中有以下单精度浮点数

a = single(-2.345)

我想将数字表示为一个4字节的数组,遵循IEEE 754.正确的表示应该是

b = [123, 20, 22, 192]

目前,我正在使用freadfwrite进行转换,例如

fid = fopen('test.dat','wb')
fwrite(fid,a,'float')
fclose(fid)

fid = fopen('test.dat','rb');
b = fread(fid)'

这已经足够了,但我怀疑有一种更简单,更快捷的方式来进行转换而无需从文件读取/写入。

有一些关于将字节数组转换为浮点数的帖子(例如here),但我不确定如何继续向相反的方向前进。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您可以使用typecast函数在不更改基础数据的情况下在数据类型之间进行转换,即使用其他类型重新解释数据。在您的情况下,您将需要从single转换为uint8(字节)数据类型。这是由

完成的
a = single(-2.345);
typecast(a,'uint8')
ans =
  123   20   22  192

根据需要。