在 simulink 中将 3 uint8 的向量转换为 uint32

Convert a vector of 3 uint8 to a uint32 in simulink

提问人:Cody Sam 提问时间:5/28/2023 最后编辑:Cody Sam 更新时间:6/2/2023 访问量:201

问:

我有一个包含 3 个元素的向量,所有元素都类型为 uint8,需要转换为 uint32,我正在努力找到正确的块来做到这一点,我尝试解压缩信号,但随后这会产生输入宽度大小问题,因为它只输出 3 个信号。有谁知道simulink中是否有这样的块

编辑:数据打包器块将 uint32 作为输入,然后输出 3 个 uint8 元素的向量。我正在尝试将其转换回一个 uint32 输出,但由于向量的大小不兼容,我无法使用字节解包来执行此操作。

我尝试了数据解包、信号选择器和数据转换,它们都输出了错误大小的信号。因为它们输出了 3 个信号而不是 1 个 uint32 信号

MATLAB 字节 Simulink 32 位 UInt8T

评论

0赞 Cris Luengo 5/29/2023
这是非常不清楚的:我不知道你拥有什么,也不知道你想从中得到什么,也不知道你尝试了什么。你一开始说你有一个 3 个元素的向量,但后来你谈到了信号,我不明白这有什么关系。如果你展示了一些关于如何创建模拟输入数据的代码,以及你的预期结果应该是什么,那么我认为它会更清楚。
0赞 Cris Luengo 5/29/2023
对你的帖子的一种解释是,你有三个字节需要转换为一个 3 字节的值。
0赞 Cody Sam 5/29/2023
@CrisLuengo我添加了一些评论。谢谢
0赞 Ferro Luca 5/30/2023
最有可能的是,我会选择 MATLAB 函数块并使用 typecast() 函数。在这种情况下,请小心机器端序。如果你的机器是小端序,可能也需要一个交换字节。

答:

0赞 morteza 5/31/2023 #1

一种解决方案是将 uint32 数据解压缩为 double,然后根据其值将结果分成三个数字。例如,一个 6 位数字,例如 123456。12、34 和 56 可以转换为 uint8,以便作为三字节包发送。另一方面,在接收器中,它们需要组合以形成原始数字。发送部分如下。接收器相反。sending 123456 as three uint8