$30
Homework #2: Cyclic Redundancy Check (CRC)
In this homework, you are asked to write a MATLAB program for the
cyclic redundancy check (CRC) code, using CRC-32. Please download
the data M(x) (inputdata.mat that contains a binary vector of 12000bits
named “packet”) on eLearn.
1. Use the input data M(x) and the generator of CRC-32
to find the transmitted message P(x) (as a binary vector of 12032
bits). (Note: Do not use the function of CRC32 in MATLAB.)
2. Suppose that you are a middle man and you would like to corrupt
the transmitted message P(x) by adding an undetectable error E(x)
into P(x). A trivial way to do this is to let E(x)=C(x) and add C(x)
to P(x). But this will change 15 bits in P(x) as there are 15
nonzero terms in C(x). Can you find an E(x) that only needs to
change at most 10 bits in P(x)? Your score for this problem will
depend on the number of bits that you need to change in P(x).
Upload a compressed files (YourID.rar, e.g., 99064599.rar) that contents
your results as two binary arrays P(x) and E(x) in a file (YourID.mat, e.g.,
99064599.mat) that contains two binary vectors of 12032bits named
“codepacket” (P(x)) and “error”( E(x) ) and the two source code files
(YourID_1.m, e.g., 99064599_1.m for generating P(x) and
YourID_2.m, e.g., 99064599_2.m for generating E(x)) to eLearn.
1
( )
10 8 7 5 4 2
32 26 23 22 16 12 11
+ + + + + + + +
= + + + + + +
x x x x x x x
C x x x x x x x x