simulink中如何把四个uint8数据转换为一个float型数据?
发布网友
发布时间:2022-05-08 10:09
我来回答
共1个回答
热心网友
时间:2022-07-15 10:23
据我所知,好像没有专门的模块实现这个功能。
但可以编写函数来实现这个功能,核心是使用typecast函数在不改变底层数据的情况下实现类型转换。看一下下面的代码,有助于你了解这个函数是怎样工作的:
>> format hex
>> single(123.456)
ans =
42f6e979
>> format short
>> hex2dec(['42'; 'f6'; 'e9'; '79'])
ans =
66
246
233
121
>> typecast(uint8([66 246 233 121]), 'single')
ans =
1.5185e+35
>> format hex
>> typecast(uint8([66 246 233 121]), 'single')
ans =
79e9f642
>> format short
>> typecast(fliplr(uint8([66 246 233 121])), 'single')
ans =
123.4560
请注意,这里涉及到一个概念叫所谓的big-endian和little-endian,就是说用于表示一个单精度浮点数的4个字节究竟是哪个在前哪个在后,在不同的系统上可能是不一样的,你需要自己试一下,剩下的就是编写一个简单的MATLAB Fcn的问题了。