matlab中精度转换,MATLAB:将uint32(4字节)值转换为相应的IEEE单精度浮点形式

在MATLAB(r2009b)中,我有一个包含值2147484101的uint32变量.

这个数字(它的4个字节)是在抓取过程中从数字机器视觉相机中提取的.根据我的理解,它具有相机快门速度的单精度形式(应接近1 / 260s = 3.8ms).

如何使用MATLAB中提供的内容将此32位数转换为IEEE单精度浮点表示?

对于变量n中提到的值,我尝试使用nn = dec2hex(n,16)和hex2num(nn)的组合.但似乎hex2num期望十六进制编码是双精度的而不是单一的,因为它在这里.至少我用这种方法得到了奇怪的数字.

有任何想法吗?

编辑:尝试@Matt的回答如下:

typecast(uint32(2147484101),'single') %# without swapbytes

typecast(swapbytes(uint32(2147484101)),'single') %# with swapbytes

这使:

ans =

-6.3478820e-043

ans =

-2.0640313e+003

使用:

format hex

typecast(uint32(2147484101),'uint8') %# without swapbytes

typecast(swapbytes(uint32(2147484101)),'uint8') %# with swapbytes

ans =

c5 01 00 80

ans =

80 00 01 c5

将这些字节输入applet(十六进制)给出了与MATLAB相同的数字.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值