📄 crcdecode.m
字号:
% 采用美国16-CRC标准
% 16bit CRC 生成多项式D16+D1+D2+1
% 输入code为要进行解码的码源
% 返回值sign是指示是否出现错误1为有错,0为无错
% 如果正确 指示0 并解码,decode 为解码后的码
function [decode,sign] =CrcDecode(code)
generator = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1]; % 16bit CRC 生成多项式D16+D15+D2+1
[divid, remainder]=deconv(code,generator); % 对多项式的除,就等于做反卷积
remainder=mod(remainder(end-15:end),2); % 对除法的余数做模二运算
if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
sign=0;% 如果正确 指示0 并解码
decode=code(1:end-16);
% msgbox(['CRC[',num2str(code(end-16:end)),']校验正确!']);
else
sign=1;
decode=code(1:end-16);
% msgbox(['CRC校验错误:[',num2str(remainder),']']);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -