移位处理在matlab与for循环

12个视图(过去30天)
吉米曹
吉米曹 2020年8月7日
嗨,伙计们,谁能告诉我如何实现我在Matlab中附加的这个功能?完全是如果条件和位留下偏移和位向和在MATLAB中。
这是我在C ++中的功能:(我在Matlab中没有专业人员,并会得到任何帮助)..这函数得到两个输入,一个是它是UINT8_T(字节类型)的CRCDATA,第二个是两个字节类型(UINT16_T)
非常感谢!
uint16_tcallccrc (uint8_t crcData, uint16_t crcReg)
{
uint8_t i;
(i = 0;我< 8;我+ +)
{
如果(((crcReg & 0x8000) >> 8) ^ (crcData & 0x80))
{
crcreg =(crcreg << 1)^ crc16_poly;
}
其他的
{
crcReg = (crcReg << 1);
}
CRCDATA.<< = 1
}
返回crcreg;
}
5点评论
吉米曹
吉米曹 8月8日
@ 沃尔特·罗伯森 感谢您的帮助!
那么我如何通过在Matlab中转发的等效代码来写入我在C ++中写的是什么?谢谢你很多。
是的,似乎CRC生成器对我在C++中写的东西有意义,但仍然不熟悉它的参数。你能帮助我如何用你所转发的代码在MATLAB代码中写同样的CRCCALC(我用C++写)吗?谢谢。

登录评论。

答复(1)

沃尔特·罗伯森
函数crcReg=calcCRC(crcData、CRCRCREG、CRC16\U POLY)
I = 0: 7
如果Bitxor(Bitshift(Bitand(Crcreg,0x8000),-8),......
Bitand(CRCDATA,0x0080))
crcReg = bitxor(bitshift(crcReg, 1), CRC16_POLY);
其他的
crcreg = bitshift(crcreg,1);
结束
crcData = bitshft(crcData, 1);
结束
你确定这个公式吗?结果总是均匀的,因为移位不是循环的,最后的移位总是左移位1位,最后总是引入0位。
16评论
吉米曹
吉米曹 8月12日
有意义的,赞赏。

登录评论。

社区宝藏狩猎

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!