MATLAB正确使用fread()和float32

时间:2018-11-20 12:36:52

标签: matlab fread

我正在从串行端口接收(来自4个电机的旋转时间)数据。

我正在使用:

fileread = fopen(file_name);

%Convert to float
times = fread(fileread,'float32') 

值是二进制的并且具有格式(读取后): 范例1:

times =
11012,4443359375
11012,7773826587
11012,7773488505
11012,7773178500

然后我计算一个(电动机速度):

%Solve full rotation speed (Hz)
motorspeed = 1./(2.*times); 

并获得答案

motorspeed =
45.403
45.413
45.233
45.783

但是,如果我仅使用4个电机中的1个,则得到以下值: 示例2:

times =
11012,4443359375
6,44429277903543e-39
2,51729256131310e-41
9,80908925027372e-44

motorspeed =
45.403
77588032875632144111403251571861040368975872.000
19862609840597303702026941971780138162366447616.000
5097313188235571189218766267134897934598963986432.000
  • 为什么我会收到一个像6,44429277903543e-39这样的值,我只是通过串行接口发送零?

非常感谢您!

0 个答案:

没有答案