如何将两个 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,我将得到记录的数据作为两组数据,SomeFloat1
和SomeFloat2
。两者都是无符号的 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
我对matlab的了解非常有限,所以我会用更笼统的术语来解释我的问题:
我们有一个记录系统,可以实时对嵌入式系统中的变量进行采样,并将记录的数据作为 matlab 文件进行分析。
我的问题是,如果记录的变量是 "double"(更具体地说是 64 位,IEEE 754-1985,浮点值),结果将作为两个无符号 32 位整数传递,我不知道如何在 matlab 中将它转换回浮点值。
例如,如果我记录变量SomeFloat
,它是一个double,我将得到记录的数据作为两组数据,SomeFloat1
和SomeFloat2
。两者都是无符号的 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