如何将两个 32 位无符号整数解释为 64 位浮点 ("double") 值?

How do I interpret two 32-bit unsigned integers as a 64-bit floating-point ("double") value?

我对matlab的了解非常有限,所以我会用更笼统的术语来解释我的问题:

我们有一个记录系统,可以实时对嵌入式系统中的变量进行采样,并将记录的数据作为 matlab 文件进行分析。

我的问题是,如果记录的变量是 "double"(更具体地说是 64 位,IEEE 754-1985,浮点值),结果将作为两个无符号 32 位整数传递,我不知道如何在 matlab 中将它转换回浮点值。

例如,如果我记录变量SomeFloat,它是一个double,我将得到记录的数据作为两组数据,SomeFloat1SomeFloat2。两者都是无符号的 32 位整数。 SomeFloat1 包含 SomeFloat 的 32 个最高有效位,SomeFloat2 包含 32 个最低有效位。

我希望找到一个现有的函数来将它转换回 double,我的意思是:

MyDouble = MyDreamFunction(SomeFloat1, SomeFloat2)

我没能找到 MyDreamFunction,但作为 matlab 的新手,我不太确定去哪里找...

那么,有人知道执行此操作的简单方法吗?

我想你想要 typecast(在不更改基础数据的情况下转换数据类型):

>> x1 = uint32(7346427); %// example uint32 value
>> x2 = uint32(1789401); %// example uint32 value
>> typecast([x2 x1],'double')
ans =
  1.4327e-306
>> typecast([x1 x2],'double')
ans =
  3.7971e-308