【发布时间】:2014-11-14 15:04:55
【问题描述】:
我正在尝试显示从串行接收到的值,但 Matlab 不接受十进制数字结果。 我想从设备接收 A=0.123,将值乘以 1000,然后通过串行发送到 matlab。
matlab 脚本接收到 123,但是当将该数字除以得到原始值时,matlab 显示 0。
consRollKpTemp = typecast([uint8(mess(typei + 1)), uint8(mess(typei + 2)),uint8(mess(typei + 3)), uint8(mess(typei + 4))], 'int32');
disp(consRollKpTemp);
consRollKp = consRollKpTemp/1000;
disp(consRollKp);
返回
consRollKpTemp:
123
consRollKp:
0
我认为问题在于typecast(X,type) 函数
将 X 中的数值转换为 type 指定的数据类型。
我把它改成了:
consRollKpTemp = typecast([uint8(mess(typei + 1)), uint8(mess(typei + 2)),uint8(mess(typei + 3)), uint8(mess(typei + 4))], 'single');
【问题讨论】:
标签: matlab casting rounding number-formatting