CRC MATLAB Source Code for CRC8 and CRC32

matlab
crc
source code
error detection
crc32

This section covers CRC MATLAB source codes, specifically for CRC8 and CRC32. Various polynomial-based CRC techniques are employed for error detection, determining if errors have occurred in a received packet from a remote end.

It’s applicable in both wired and wireless transmission systems. When an error is detected, retransmission is usually initiated.

For more details, refer to our page on CRC in the terminology section.

CRC8 MATLAB Code

The following is the CRC MATLAB code for CRC8 polynomials, commonly used in Ethernet and wireless standards (WiMAX, WLAN, etc.).

Input = [0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, ...
         0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0, ...
         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  % Input values.
M1 = Input;
G1 = [1,0,0,0,0,0,1,1,1];
mL = length(M1);
gL = length(G1);
count = 0;

while((mL-count) >= gL)
    msg9 = M1(1:gL);
    rem = mod((msg9 + G1),2);
    M1(1:gL) = rem;
    j=1;
    shft = 0;
    while(j<=gL)
        if(rem(j)~=0)
            break;
        else
            shft = j;
            j = j + 1;
        end
    end
    count = count + shft;
    M1(1:shft) = [];
end

j = 0;
value = 0;
chksuml = length(M1);

for j = 1:chksuml  % convert binary to decimal
    if(M1(j) == 1)
        value = value + (2^(chksuml-j));
    end
end

dec2hex(value)  % decimal to hex

CRC8 Output in MATLAB Command Window

crc matlab

CRC MATLAB Code for CRC32

The following code demonstrates CRC32 polynomials in MATLAB.

function Output = CRC_gen(Input)
  GenPoly = [1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0]; % G(x)=x32+x26+x23+x22+x16+x12+ x11+ x10+ x8+ x7+ x5+ x4+ x2+x+1
  BufferInit = ones(1,32);
  Input = [ Input  zeros(1,32)];
  for i = 1:length(Input)
    temp1 = BufferInit(end);
    temp2 = temp1*GenPoly;
    for j = length(BufferInit):-1:2
      BufferInit(j) = xor(temp2(j), BufferInit(j-1));
    end
    BufferInit(1) = xor(Input(i), temp2(1));
  end
  Output = fliplr(BufferInit);
end
ON OFF Keying (OOK) MATLAB Code

ON OFF Keying (OOK) MATLAB Code

MATLAB code for ON OFF Keying (OOK) modulation, including output plots, relevant equations, and download links. OOK is a digital modulation technique.

matlab
ook
modulation