crc32matlab代码,CRC循环冗余校验

honglei.chen 发表于 2012-7-31 22:16 bbd016eb636182ff59f287f6e5567aa8.gif

http://www.mathworks.com/help/toolbox/comm/ref/crc.detector.html

http://www.mathworks.com/help/tool ...

这是我算的:

clear all;

%G表示g(x)前面添加9个零,o(x);

G=[0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1 ];

%msg原始信息

msg=[1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1];

f=[1 1 0 1 1 1 0 1 0 1 1];

g=[1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1];

%下边这个poly-----f(x)*g(x),算法conv(f,g)

%poly=[1 1 1 3 3 3 2 4 3 4 2 3 3 4 3 3 2 3 5 4 4 3 4 6 6 4 3 5 4 5 5 4 4 6 5 5 4 3 4 5 3 6 4 4 4 6 3 5 5 5 5 5 5 2 6 3 3 2 4 4 3 4 3 6 5 4 4 6 4 5 3 4 3 3 3 4 3 1 3 2 2 2 1 1 2 1];

%下边这个poly ---conv(f,g);poly=mod(abs(poly),2);

poly=[1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 1];

%下边这个poly:我理解的f(x)*g(x)二进制表示:按多项式乘法做,系数不为零的位均置1,为零的置0

%poly=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];

[M N]=size(poly);

mseg=[msg zeros(1,N-1)];

[q r]=deconv(mseg,poly);

r=abs(r);

for i=1:length(r)

a=r(i);

if ( mod(a,2)== 0 )

r(i)=0;

else

r(i)=1;

end

end

crc=r(length(msg)+1:end);

crc1=bitxor(crc,G);

我算出来的校验码与正确值对不上

正确值:1001110010100100101111101101011101111110001001101110001010110011011110110110100111110

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值