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

Boi*_*ise 2 matlab

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

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

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

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

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

MyDouble = MyDreamFunction(SomeFloat1, SomeFloat2)
Run Code Online (Sandbox Code Playgroud)

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

那么,有没有人知道这样做的简单方法?

Lui*_*ndo 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
Run Code Online (Sandbox Code Playgroud)

  • `typecast`肯定是要走的路.需要为你做奇数乘法2 ^ n的麻烦. (2认同)