关键词 > EENGM2010&EENGM2011

EENGM2010 & EENGM2011 Coding Theory 2023-2024

发布时间:2023-11-24

Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

Coding Theory 2023-2024

(EENGM2010 & EENGM2011)

Coursework Instructions

To be issued in week 7.

In this note you will find:

•   Descriptions of the coursework tasks.

•   Marking scheme.

•   Notes and suggestions how to write the technical report.

•   Frequently Asked Questions.

DEADLINES

Report and codes submission

You need to submit your technical report and all MATLAB (or Python/NumPy) codes via Blackboard (online). The deadline is:

Thursday, 7 December 2023 13:00:00 GMT

Introduction

In this coursework you will implement in MATLAB or Python various error correcting codes. In what  follows references  are made  w.r.t.  MATLAB, however you  can  submit  all  your coursework in Python. If you do so, you should use the NumPy library as the base of your code. You will be asked to generate simulation results assuming: Binary Symmetric Channel (BSC), Binary Erasure Channel (BEC), and BPSK modulation with Additive White Gaussian Noise (AWGN).

Although the MATLAB communications toolbox contains several functions for error control coding, you should not use them for these exercises (to be awarded maximum marks). The toolbox  functions  are intended to provide an  efficient  and  simple to use  implementation, without requiring detailed understanding of the algorithms. Instead, we will deliberately take a direct implementation approach which, will enhance understanding of the concepts  and algorithms covered in lectures. You are required to write  .m files for all the steps.

The coursework consists of 3 main tasks. You are required to submit an individual technical report   containing   discussions    of   your   results   and    implementation   choices    and   all MATLAB/Python codes. You should also include any relevant introduction and description of your algorithms in your report.

Task  1:  (15,11)  Hamming  code:    error  correcting  performance  on  BSC  and AWGN channels

Write a MATLAB function which constructs the generator matrix, the parity check matrix, encoding and decoding functions (syndrome look-up table) for the Hamming (15,11) code.

Investigate the performance of the Hamming code in the Binary Symmetric Channel. The plot should show the BER statistics as a function of the cross-over probability “p” of the BSC channel.

The BSC parameter should be in the interval p[0,0.2] – use at least 20 points in this interval. In your figure, add the theoretical prediction of BER as a function of p for this code.

You will need to perform Monte Carlo (MC) simulations to obtain the experimental BER performance curve. You may need many MC repetitions to obtain smooth curves.

In your report comment on your results: Does the theoretical BER approximation predict well the experimental performance?

(20 marks).

Task 2 Numerical instigation of error detecting capabilities of the CRC-6-ITU code

In this task you need to write a MATLAB function which plots error detecting capabilities of the CRC-6-ITU code. The plot should show the probability of error detection as a function of the Hamming weight of the error sequence. The question we are answering is: what is the probability that a randomly chosen error pattern with a given hamming weight is detectable?

We want to have those statistics for all possible hamming weights i.e. {1,2,3,4 … }.

The results figure should be plotted in the form of a MATLAB bar – below is an example figure how the results should be represented (do not be influenced by the height of those bars – you should expect different results!).

Figure 1: Example of error detection statistics for some code (NOT THE ONE FROM task2).

In your report answer the following questions:

a)   Judging by the results: what do you think is the Minimum hamming distance of this code? Motivate your answer.

b)  What is the proportion of weight 5,10 and 15 error sequences which are detectable by this code?

c)   Is the sequence composed of all “1”s a valid codeword for this code? Motivate your answer.

(20 marks).

Task 3: Empirical investigation of the error correcting performance of a binary convolutional code

In this task you need to write a script which performs Monte Carlo simulations to obtain BER curves in noisy channels.

For this task you will use a convolutional code and the probability of error will be estimated empirically i.e. in the form of BER via Monte Carlo simulations.

The rate 1/2 code for this task is given in Figure 2. Draw a state diagram and include it in your report. Assume that the  input  data  sequence  k=100  Bytes  (800  bits,  also  allow  for terminating bits). As the decoder you should implement the Viterbi decoder.

Figure 2: Convolutional encoder for Task 2.

Assume  the  encoded  signal  is  modulated  by  BPSK  and  is  subjected  to  additive  white Gaussian noise (AWGN), which can be simulated by adding Gaussian noise with a variance:

Note that this assumes that symbols are transmitted as  士1  (BPSK) (suitably scaled to adjust for the code rate)

Task 3.1

Plot  on  the  same  figure:  the  curve  for  uncoded   BPSK  transmission,  uncoded  BPSK transmission with Eb/N0 adjusted for the code rate, and the BER plot for your code - Figure 1 showshow your results should be represented. Discuss our results.

1.   What is the coding gain at BER=0.1, 0.01 and 0.001?

(20 marks), and

(20 marks for own implementation of the Viterbi Decoder)

Marking scheme: atotal of 100 marks are possible.

Task 1: 20 marks

Task 2: 20 marks

Task 3: 40 marks

Overall quality of the technical report 20 marks.

Technical report quality 20 marks

– see marking scheme at the end of this note.

Notes and suggestions how to write the Technical Report.

The technical report should be no less than between 5 pages in length (including figures). This is guidance, the report can be longer if additional commentary/ results are included. It should include  a  brief  review   of  the  relevant  theory   in  the  introduction   section  and  detailed discussions of the results, and implementation choices.

Do not include MATLAB/Python listing (verbatim copy of the section from m-file) in the technical report. You can however include “pseudo code” and the block diagram describing the algorithm that was used.

A description of what “pseudo code” is can be found:

https://www.sciencedirect.com/topics/engineering/pseudocode

A good guide how to write technical reports is given here:

https://www.monash.edu/rlo/assignment-samples/engineering/eng-writing-technical-reports

Both  the  technical  report   and  the  MATLAB   codes  will  be   automatically  checked  for originality (plagiarism checks).

Each point in the table below is worth 2 marks, i.e. the total for the report quality is 20 marks.

Points

Overall report quality

1.0 - 2.0

2.0 - 3.0

Although the report has been delivered/submitted, there is no communication taking place.

3.0-4.0

Although the report has been delivered/submitted, there is little or no communication taking place. Inadequate understanding and knowledge of fundamentals.  Poor quality of critical judgement.

4.0-5.0

Little effort made with software tools (editing / presentation).   Little or no structure.   Poor grammar and  spelling. Knowledge  of  some fundamentals, but major gaps in understanding.     Little  critical judgement.

5.0-6.0

Rather unimaginative use of editing tools.     Some   deficiencies in structure.     Some   spelling or grammatical  inadequacies.    Basic  understanding  and  knowledge  of  most of  the  fundamentals, but perhaps with some misconceptions.  Possibly limited critical judgement.

6.0-7.0

Competent  use of  editing tools. Few,  if any,  spelling or grammatical errors.  Good choice of  result figures with good critical judgement but lacking some focus. Evidence of intelligent exploration of the subject.

7.0-8.0

Creative  use  of  software  tools. No spelling or  grammatical errors.     Grabs  the  reader’s attention. Excellent structure and expression and critical  judgement;   well-chosen illustrations and results. Thorough understanding and knowledge of subject in breadth and depth.

8.0-9.0

Flair and originality in tackling open-ended tasks. Authoritative grasp of the concepts, methodology and issues. Some review of background material. Design is viable and elegant; strengths are identified and weaknesses addressed. Some evidence of research ability.

9.0-10

As 8-9 but seen perhaps only once every year or two in atypical class.

Frequently Asked Questions

1.    Can I re-submit my coursework? I submitted my coursework but later I realised that I made a mistake - can I submit it again?

Yes, you can re-submit your coursework (the system will accept up to 5 re-submissions). Only the last submission will be marked.

2.   I think that the convolutional encoder in task 1 may be bad (e.g. it could lead to a catastrophic error propagation).

If you think that the proposed encoder is not good, you can modify it. However, you need to argue the case, i.e. you have to provide evidence that the encoder is not good. You can then modify the encoder, by adding or removing connections in the shift register (the encoder). the constraint length needs to stay as 3.

3.   Can I use Viterbi decoder from Matlab’s Communications Toolbox?

Yes, you can use the Viterbi decoder from MATLAB toolbox. However, if you implement it yourself you can be awarded up to 20 marks.

4.   Should I copy coder from MATLAB m.files into the report?

No,  do  not  include  MATLAB  listing  (verbatim  copy  of the  section  from  m-file)  in  the technical report. You can however include “pseudo code” and the block diagram describing the algorithm that was used.

5.   In the BEC channels how do I know locations of the erasures.

In the binary erasure channel model we assume that the receiver knows when the erasures have happened (the receiver knows the locations after it receives the signal) - this is modelled by the additional symbol “?” or “E” at the output of the model.

6.   In task 3, Should I implement hard or soft decisions Viterbi decoder?

You can implement either of the two (hard or soft)- you can choose it. Make it clear in your report which one you have chosen.

7.   Can I use Python instead of MATLAB?

Yes you can use Python. However, you should use the NumPy library of Python. You can also use Galois extension to NumPyhttps://pypi.org/project/galois/. Preferably you should use Jupiter Notebook, and submit *.ipynb files.