从字节中接收Matlab中的浮点

时间:2013-04-10 20:49:06

标签: matlab floating-point

我想通过串行COM向Matlab发送一个浮点数,并将其解释为单精度浮点数。

我可以通过串行发送数据作为字节数据包。

因此,在发送方,我将32位浮点数移动8,屏蔽并发送

(byte)((number >> 8) & 0x000000FF)
(byte)((number >> 16) & 0x000000FF)
...
\r\n (line termination)

现在,在Matlab上我连接到COM并使用fscanf(s,'%f')接收,其中s是串行实例。它读取字节直到终止线。

现在,问题是Matlab上的输出与我发送的不一样。我认为问题在于是在不同的浮动表示还是不同的发送顺序。

例如。如果我发送小数1.2 (0x3f99999a),Matlab会打印1.5315e+010

我可能做错了什么?

编辑:

Matlab fscanf http://www.mathworks.co.uk/help/matlab/ref/fscanf.html

2 个答案:

答案 0 :(得分:1)

当数据是二进制时,请尝试fread而不是fscanf

答案 1 :(得分:1)

默认情况下,number的类型为double,即64位。您应该执行64位而不是32位的移位。否则,您可以将数字声明为uint32类型并执行32位移位。