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

ada*_*non 2 matlab type-conversion

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

a = single(-2.345)
Run Code Online (Sandbox Code Playgroud)

我想将其表示为遵循IEEE 754的4个字节的数组。正确的表示应为

b = [123, 20, 22, 192]
Run Code Online (Sandbox Code Playgroud)

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

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

fid = fopen('test.dat','rb');
b = fread(fid)'
Run Code Online (Sandbox Code Playgroud)

足够好了,但是我怀疑有一种更轻松,更快捷的方式来进行转换,而无需从文件中进行读取/写入。

关于将字节数组转换为浮点数的文章已经很多了(例如here),但是我不确定如何朝相反的方向前进。有什么建议么?

hba*_*rts 5

您可以使用该typecast函数在数据类型之间进行转换,而无需更改基础数据,即使用另一种类型重新解释数据。在您的情况下,您将需要从转换singleuint8(字节)数据类型。这是通过

a = single(-2.345);
typecast(a,'uint8')
ans =
  123   20   22  192
Run Code Online (Sandbox Code Playgroud)

按要求。