【发布时间】:2015-03-25 22:57:17
【问题描述】:
我对matlab的了解非常有限,所以我会用更笼统的术语来解释我的问题:
我们有一个记录系统,可以实时对嵌入式系统中的变量进行采样,并将记录的数据作为 matlab 文件进行分析。
我的问题是,如果记录的变量是“双精度”(更具体地说是 64 位,IEEE 754-1985,浮点值),结果将作为两个无符号 32 位整数传递,而我没有想法如何在 matlab 中将其转回浮点值。
例如,如果我记录变量SomeFloat,它是一个double,我将记录的数据作为两组数据,SomeFloat1 和SomeFloat2。两者都是无符号的 32 位整数。 SomeFloat1 包含 SomeFloat 的 32 个最高有效位,SomeFloat2 包含 32 个最低有效位。
我希望找到一个现有的函数来将它转换回来做一个双精度,我的意思是:
MyDouble = MyDreamFunction(SomeFloat1, SomeFloat2)
我一直无法找到MyDreamFunction,但是对于 matlab 的新手,我不太确定去哪里找...
那么,有谁知道一个简单的方法来做到这一点?
【问题讨论】:
-
您是否考虑过尝试修复记录系统写入其值的方式,因为您似乎正在解决其中的一个(非常烦人的)错误或限制?
-
@NeilSlater 你是绝对正确的。不幸的是,这不是我当前问题的选择,但我肯定会建议对记录系统进行更改。
-
@NeilSlater。 OP提到了嵌入式系统。这可能不是那么灵活。我经常使用 8051 微控制器,而该死的东西是 8 位。我记录了 16 位和 32 位的值,但是当我将其传输到 PC 时,一次只有 8 位。所以我必须经常使用
typecast(如下面@LuisMendo 的回答)来重建我的值,一旦它们到达PC(更糟糕的是,8051 以大端顺序向我发送值,所以我也必须缓冲然后随机播放字节...... pffff)。
标签: matlab