• 大小: 28KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: CRC  matlab仿真  

资源简介

CRC编码的matlab仿真,内含文档和代码。

资源截图

代码片段和文件信息

function [ out ] = check_CRC( varargin )
%CRC校验码检验程序
%   输入:data:接收码
%         gen:多项式
%   输出:1为校验正确,0为错误
%   举例:check_CRC([1010011][1011]);
%   同样支持字符输入和数组输入,如
%   check_CRC([1010011][1011]);
%   check_CRC(‘1010011‘‘1011‘);
[datagen] = parse_inputs(varargin{:});
dlen = length(data);
len = length(gen);
num = 0;
while gen(1) ==0        %去除多项式开头0项
   gen = gen(2:len);
   len = length(gen);
end

crc = data(1:len-1);
for i = len:dlen
    crc(len) = data(i);
    if crc(1)
        crc = xor(crc(2:len)gen(2:len));%异或运算,相当于除法
    else
        crc = crc(2:len);
    end
end
n = length(crc);
for j = 1:n
    num =num + crc(j)*10^(n-j);
end
if num ==0
    out = 1;
    msgbox(‘传输过程正确!‘‘提示信息‘‘help‘‘modal‘);
else
    out = 0;
    msgbox(‘传输过程出现错误!‘‘提示信息‘‘help‘‘modal‘);
end
end
%--------------------------------------------------------------------------
function [datagen] = parse_inputs(varargin)
if nargin == 0
    error(message(‘必须输入参数‘));
elseif nargin == 1
    error(message(‘必须输入2个参数(接收数码与多项式)‘));
elseif nargin == 2
    if ischar(varargin{1}) == 1
        n = length(varargin{1});
        temp = varargin{1};
        data = zeros(1n);
        for i = 1:n
           data(i) = str2double(temp(i));
        end
    else
        if length(varargin{1}) == 1
            temp = num2str(varargin{1});
            n = length(temp);
            data = zeros(1n);
            for i = 1:n
                data(i) = str2double(temp(i));
            end
        else
            data = varargin{1};
        end
    end
    
    if ischar(varargin{2}) == 1
        n = length(varargin{2});
        temp = varargin{2};
        gen = zeros(1n);
        for i = 1:n
           gen(i) = str2double(temp(i));
        end
    else
        if length(varargin{2}) == 1
            temp = num2str(varargin{2});
            n = length(temp);
            gen = zeros(1n);
            for i = 1:n
                gen(i) = str2double((temp(i)));
            end
        else
            gen = varargin{2};
        end
    end
end
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2229  2016-05-19 16:51  CRC\check_CRC.m

     文件      30195  2016-05-08 23:12  CRC\CRC.docx

     文件       2487  2016-05-19 16:53  CRC\generate_CRC.m

     目录          0  2016-05-19 16:54  CRC

----------- ---------  ---------- -----  ----

                34911                    4


评论

共有 条评论