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

时间:2015-01-27 10:46:48

标签: matlab

我对matlab的了解非常有限,所以我将使用更一般的术语来解释我的问题:

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

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

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

我希望找到一个现有的转换它的功能做一个双倍,我的意思是:

MyDouble = MyDreamFunction(SomeFloat1, SomeFloat2)

我找不到MyDreamFunction,但是对matlab不熟悉,我不确定在哪里看......

那么,有没有人知道一种简单的方法呢?

1 个答案:

答案 0 :(得分:5)

我认为您需要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