辅导案例-ELEC6238

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
ELEC6238 Research Skills and Practice
Matlab coursework
This coursework forms your assessment for the Matlab part of ELEC6238 Research Skills and Practice.
This coursework contributes 40% of your mark for ELEC6238 and completing it should require up to 47 hours
of work outside the scheduled lectures and labs. Please do not spend any more time than this because I’m sure
you have better things to be doing! However, you should make sure that you get started on this coursework
early enough to finish it before the deadline. There’s no way that you can complete a 47-hour coursework in
only the week before the deadline.
In the exercises detailed below, you are asked to write some Matlab code and produce some results. Al-
though you may verbally discuss your ideas with your classmates, you should not show them your Matlab
code or results. When you are finished, you should copy and paste your Matlab code and results into a Word
document, which you should then save as a .pdf file. This Word document should only include the Matlab code
and results that are directly requested in the bold paragraphs below - it should not include anything else. In
particular, there is no need to write a report for this coursework.
When you are finished, you need to submit the .pdf version of your Word document, your Matlab code and
your result files to the electronic handin system1 before 4pm on Friday 1st November 2019.
As shown in the marking scheme of Table 1, one third of your marks in this coursework depend on each of
the functionality, efficiency and human-readability of your Matlab code. I will mark the human-readability of
your Matlab code by looking at your Word document. I will also look at the results in your Word document to
assess some aspects of your Matlab code’s functionality and efficiency. However, I will also run your Matlab
code on my computer to assess its functionality and efficiency more thoroughly. I will do this using Matlab
scripts that are similar to the ones you can download from the ELEC6238 resources webpage2. Note however
that my versions of these scripts include some additional tests, so you need to ensure that your Matlab code
works in the general case, not just for the specific tests that are included in the scripts on the ELEC6238
resources webpage. Some of the tests in these scripts produce measurements, which I will use to mark the
functionality and efficiency of your Matlab code. Some of the tests produce pass or fail messages and I will
give higher marks for your Matlab code’s functionality if it can pass more of these tests. Note that some of
these tests deliberately give erroneous inputs to your Matlab code. In order to pass these tests, your Matlab
code will need to generate an error message using a command like the following one.
error('Soton:argChk','Your error message goes here');
I will return your marks and the results of running your Matlab code on my computer to you within four
weeks of the submission deadline. You can see how to interpret your marks in Table 2. I will also give some
general feedback and show you my solutions to the exercises in the ELEC6238 lecture that we have at the end
of the semester.
If you notice any mistakes in this document or have any queries about it, please email me4.
Have fun! Rob Maunder
1The URL for this is https://handin.ecs.soton.ac.uk/handin/1920/ELEC6238/2/.
2The URL for this is https://secure.ecs.soton.ac.uk/notes/elec6238/matlab/coursework.zip
3You can see discussions of good Matlab programming practice at http://www.mit.edu/∼pwb/cssm/GMPP.pdf and
http://www.datatool.com/downloads/matlab_style_guidelines.pdf.
4My email address is [email protected].
1
Table 1: Marking scheme
33.33% Functionality. Does the Matlab code work? Does it meet the
specifications provided in the exercises below? Are the results
correct? Does the Matlab code generate appropriate error mes-
sages?
33.33% Efficiency. How quickly does the Matlab code run? Has the Mat-
lab code made good use of built in functions, vectors and matri-
ces? Or does it use proprietary code and an excessive number of
for loops?
33.33% Human-readability. Is the Matlab code reusable, elegant and well
structured? Does it follow good programming practice3? Does
it include useful, concise and relevant comments, which help ex-
plain its non-trivial features? Are the chosen variable names de-
scriptive, concise and relevant? Or does the Matlab code use an
excessive number of lines? Does the Matlab code use switch,
break, continue or return without having a really really good
reason to?
Table 2: How to interpret your marks
40 out of 40 Perfect solutions. This mark is only given if I can’t think of
any ways to improve the functionality, efficiency or human-
readability of the Matlab code and results.
29–39 out of 40 Excellent solutions. These marks are awarded to students that
have really thought about their solutions and have come up with
clever ways to optimise the functionality, efficiency and human-
readability of the Matlab code and results.
28 out of 40 Solid solutions. All of the results are correct and the Matlab code
is reasonably functional, efficient and human-readable, but all the
tricks for making them particularly so have been missed.
20–27 out of 40 Flawed solutions. Typically, these marks are given if all parts of
all exercises have been completed, but there are mistakes in the
results or Matlab code. For example, the Matlab code may work
for the specific tests provided in the scripts on the ELEC6238
resources webpage, but it may not always work in the general
case.
1–19 out of 40 Missing solutions. Typically, marks this low are only given if
some of the results or Matlab code are missing from the submis-
sion. To avoid this you should make sure you budget 47 hours for
completing this coursework outside of the scheduled lectures and
labs.
0 out of 40 No solutions. You would probably have to submit nothing at all
to get a mark this low!
2
Exercise 1 - Two-dimensional parity check encoder
Consider a wireless communication scheme which is designed to convey messages between a transmitter and a
receiver over a wireless channel. Suppose that each message is a row vector x comprising k number of symbols.
Each symbol has an integer value in the range 0 to (M − 1), where M is known as the radix of the symbols. For
example, the message vector x = [2, 0, 1, 1, 3, 2] comprises k = 6 symbols, having a radix of M = 4.
A Two-Dimensional Parity Check (TDPC) encoder may be used in the transmitter to protect the message
vector x from the corruption that may be imposed by the wireless channel, owing to noise, fading and interfer-
ence, for example. A TDPC encoder is controlled using three parameters, namely the radix M, the number of
rows i in the TDPC matrix and the number of columns j in the TDPC matrix. The TDPC encoder can be used
to encode a message vector x comprising k symbols, provided that the radix M of the TDPC encoder and of the
message are equal, and provided that the number of rows i and columns j are set such that (i − 1) · ( j − 1) = k.
The first step in TDPC encoding is to reshape the vector x, so that it becomes a matrix X, having (i−1) rows
and ( j − 1) columns. Taking each of the symbols in x from left to right in turn, the matrix X is populated one
column at a time, starting by filling the left-most column from top to bottom, before similarly filling each of the
other columns from left to right in turn. In the case where the example message vector x = [2, 0, 1, 1, 3, 2] is
TDPC encoded using the parameters i = 3 and j = 4, we obtain the matrix X =
[
2, 1, 3
0, 1, 2
]
, which has (i − 1) = 2
rows and ( j − 1) = 3 columns.
In a second step, the TDPC matrix Y is formed by copying the matrix X, but adding an extra row at the
bottom and an extra column at the right. Therefore, the TDPC matrix Y has i rows and j columns. The values in
the extra row are set such that each column has a sum that is a multiple of M. Likewise, the values in the extra
column are set such that each row has a sum that is a multiple of M. In the case where the example message
vector x = [2, 0, 1, 1, 3, 2] is TDPC encoded using the parameters i = 3 and j = 4, we obtain the TDPC matrix
Y =
2, 1, 3, 20, 1, 2, 1
2, 2, 3, 1
, which has i = 3 rows and j = 4 columns. Note that the first, second and fourth columns of this
example Y have sums of 4, while the third column has a sum of 8. Likewise, the second row has a sum of 4,
while the first and third rows have sums of 8. Note that these values of 4 and 8 are both multiples of M = 4. In
other words, a remainder of zero results when dividing the sum of each row and column by M = 4, which is to
say that the modulo-M = 4 sum of each row and each column is zero.
In a final step, the TDPC matrix Y is reshaped, so that it becomes a row vector y, having a length of (i · j).
Taking each of the columns in Y from left to right in turn and reading the columns from top to bottom, the row
vector y is populated one symbol at a time, from left to right. In the case where the example message vector
x = [2, 0, 1, 1, 3, 2] is TDPC encoded using the parameters i = 3 and j = 4, we obtain the encoded vector
y = [2, 0, 2, 1, 1, 2, 3, 2, 3, 2, 1, 1], which comprises n = i · j = 12 symbols.
In this exercise, your task is to write a Matlab function which performs TDPC encoding. Your Matlab
function is required to use the following line, in order to declare the function’s name, inputs and outputs.
function encoded_vector = TDPC_encoder(message_vector, radix, rows, columns)
Here, message_vector should accept the row vector x, while radix, rows and columns should accept the
scalars M, i and j, respectively. Your TDPC_encoder function should check that the values of these inputs
are self-consistent and if not, it should generate an error message using the command provided on page 1.
Otherwise, encoded_vector should return the row vector y. You can test the functionality and efficiency
of your TDPC_encoder function using the script test_TDPC_encoder, which you can download from the
ELEC6238 resources webpage. I will use a script similar to this one to mark the functionality and efficiency of
your TDPC_encoder function. Note that the mark that you receive for efficiency in this exercise will be capped
by the mark that you receive for functionality. This is because it is easy to write a Matlab function that runs
quickly, but does not have all of the required functionality.
When you are finished, include a listing of your TDPC_encoder function in your Word document and
submit this function to the electronic handin system.
3
Exercise 2 - Two-dimensional parity check decoder
In the wireless communication scheme mentioned in Exercise 1, the encoded vector y is conveyed between
the transmitter and the receiver over a wireless channel. This channel may suffer from noise, interference and
fading, causing the encoded vector to become corrupted. Owing to this, some of the symbols in the received
vector yˆ may have different values to the corresponding symbols in the encoded vector y. Note however that
these erroneous symbols should still have integer values in the range 0 to (M − 1). For example, the wireless
channel could corrupt the encoded vector y = [2, 0, 2, 1, 1, 2, 3, 2, 3, 2, 1, 1], resulting in the received vector
yˆ = [2, 1, 2, 1, 1, 2, 1, 2, 3, 2, 1, 1], which contains two erroneous symbols.
A TDPC decoder may be employed in the receiver to mitigate the erroneous symbols in the vector yˆ. A
TDPC decoder is controlled using three parameters, namely the radix M, the number of rows i in the TDPC
matrix and the number of columns j in the TDPC matrix. The TDPC encoder can be used to decode a received
vector yˆ, provided that it derives from an encoded vector y that has been generated using a TDPC encoder
having the same parameter values.
The first step in TDPC decoding is to reshape the received vector yˆ of n symbols, so that it becomes the
TDPC matrix Yˆ, having i rows and j columns, where i · j = n. Taking each of the symbols in yˆ from left to right
in turn, the TDPC matrix Yˆ is populated one column at a time, starting by filling the left-most column from
top to bottom, before similarly filling each of the other columns from left to right in turn. In the case where
the example received vector yˆ = [2, 1, 2, 1, 1, 2, 1, 2, 3, 2, 1, 1] is TDPC decoded using the parameters i = 3 and
j = 4, we obtain the TDPC matrix Yˆ =
2, 1, 1, 21, 1, 2, 1
2, 2, 3, 1
, which has i = 3 rows and j = 4 columns.
In a second step, the modulo-M sum of each row and each column is calculated and analysed to identify
and mitigate erroneous symbols. In the case of the example received vector yˆ = [2, 1, 2, 1, 1, 2, 1, 2, 3, 2, 1, 1],
the modulo-M = 4 sums of the columns in Yˆ are [1, 0, 2, 0], while the modulo-M = 4 sums of its rows are
21
0
.
Note that the third row, the second column and the fourth column all have modulo-M = 4 sums of 0, just as
was desired when setting the values in the extra row and column during TDPC encoding. This suggests that
there are no erroneous symbols in these rows and columns. However, the modulo-M = 4 sums of the second
row and of the first column are both equal to 1. This suggests that the symbol in the second row and the first
column has an erroneous value, which has been obtained using the modulo-M = 4 addition of the value 1 to
the correct symbol value. More specifically, this suggests that the correct value for this symbol is 0, rather than
1. Likewise, the modulo-M = 4 sums of the first row and of the third column are both equal to 2. This suggests
that the symbol in the first row and the third column has an erroneous value, which has been obtained using
the modulo-M = 4 addition of the value 2 to the correct symbol value. More specifically, this suggests that the
correct value for this symbol is 3, rather than 1. Using this logic, it can be inferred that the correct value for the
TDPC matrix is Yˆ =
2, 1, 3, 20, 1, 2, 1
2, 2, 3, 1
.
In a fourth step, the bottom row and the right-most column of the TDPC matrix Yˆ are removed, to obtain
the matrix Xˆ. In the case of the example received vector yˆ = [2, 1, 2, 1, 1, 2, 1, 2, 3, 2, 1, 1], removing this row
and this column from the TDPC matrix Yˆ results in the matrix Xˆ =
[
2, 1, 3
0, 1, 2
]
, which has (i − 1) = 2 rows and
( j − 1) = 3 columns.
In a final step, the matrix Xˆ is reshaped, so that it becomes a row vector xˆ, having a length of k = (i−1)·( j−1).
Taking each of the columns in Xˆ from left to right in turn and reading the columns from top to bottom, the row
vector xˆ is populated one symbol at a time, from left to right. In the case where the example received vector
yˆ = [2, 1, 2, 1, 1, 2, 1, 2, 3, 2, 1, 1] is TDPC decoded using the parameters i = 3 and j = 4, we obtain the decoded
vector xˆ = [2, 0, 1, 1, 3, 2], which comprises k = (i − 1) · ( j − 1) = 6 symbols. Note this decoded vector xˆ is
identical to the message vector x from Exercise 1, indicating that all erroneous symbols in the vector yˆ have
been successfully mitigated.
Note that in the example above, the symbol errors have occurred in different rows and columns of the TDPC
matrix Yˆ. Also, the rows and columns have the same set of modulo-M sums, with no repetitions within this set.
4
This has made it easy to mitigate all of the symbol errors. However, on other occasions it can be more difficult
or impossible to mitigate all of the symbol errors. For example, some symbol errors may occur in the same
row or column. Sometimes, these symbol errors can cancel each other out, causing the row or column to have
a modulo-M sum of zero. Other times, these symbol errors can cause the rows and columns to have different
sets of modulo-M sums. Furthermore, some rows or some columns may have the same modulo-M sums.
In this exercise, your task is to write a Matlab function which performs TDPC decoding and mitigates as
many symbol errors as you can. Your Matlab function is required to use the following line, in order to declare
the function’s name, inputs and outputs.
function decoded_vector = TDPC_decoder(received_vector, radix, rows, columns)
Here, received_vector should accept the row vector yˆ, while radix, rows and columns should accept the
scalars M, i and j, respectively. Your TDPC_decoder function should check that the values of these inputs
are self-consistent and if not, it should generate an error message using the command provided on page 1.
Otherwise, decoded_vector should return the row vector xˆ. You can test the functionality and efficiency
of your TDPC_decoder function using the script test_TDPC_decoder, which you can download from the
ELEC6238 resources webpage. Here, tests 1 to 7 can be used to evaluate the functionality of your TDPC_-
decoder function. Tests 8 to 17 can be used to evaluate whether your TDPC_decoder function can mitigate
particular combinations of symbol errors. It is possible to write a TDPC_decoder function that can mitigate all
of the symbol errors in tests 8 to 17, although some require much more complicated programming than others.
I would advise you to finish Exercises 3 and most of Exercise 4, before attempting to pass all of tests 8 to 17.
Finally, tests 18 to 20 can be used to evaluate the overall error mitigation and efficiency of your TDPC_decoder
function. I will use a script similar to the one you can download from the ELEC6238 resources webpage to
mark the functionality and efficiency of your TDPC_decoder function. I will consider all of the tests when
marking the functionality of your TDPC_decoder function, but I will pay particular attention to the results of
tests 18 to 20. Note that the mark that you receive for efficiency in this exercise will be capped by the mark that
you receive for functionality. This is because it is easy to write a Matlab function that runs quickly, but does
not have all of the required functionality.
When you are finished, include a listing of your TDPC_decoder function in your Word document and
submit this function to the electronic handin system.
5
Exercise 3 - M-ary symmetric channel
In the wireless communication scheme mentioned in Exercises 1 and 2, an encoded vector y of n symbols
having values in the range 0 to (M − 1) is conveyed over a wireless channel. The resulting received vector yˆ
also comprises n symbols having integer values in the range 0 to (M − 1), although some of these may have
different values to the corresponding symbols in the encoded vector y. The occurrence of these symbol errors
may be (crudely) modelled using an M-ary symmetric channel.
An M-ary symmetric channel is parametrised by two parameters, namely the symbol error probability Pe
in the range 0 to 1 and the radix M, which is required to equal the radix M of the encoded vector y. The
transmission of each of the n symbols in the encoded vector y is modelled separately and independently, by
generating a random number. Depending on the value of the random number, the value of symbol will be either
copied to the corresponding symbol in the received vector yˆ without error, or will be replaced with a different
value in the range 0 to (M − 1). This is performed such that a symbol error is avoided with a probability of
(1 − Pe) and incurred with a probability of Pe. When a symbol error occurs, the value for the symbol in the
received vector yˆ is selected from among the (M − 1) possible incorrect values, each with the same probability
of 1/(M − 1). Therefore, the overall probability of receiving a particular one of these incorrect values is given
by Pe · 1/(M − 1).
For example, consider the transmission of an M = 4-ary symbol value of 2 over an M = 4-ary symmetric
channel having a symbol error probability of Pe = 0.3. With a probability of (1 − Pe) = 0.7, the symbol will
be correctly received with a value of 2. However, with a probability of Pe = 0.3, the symbol will be received
incorrectly, with a value of either 0, 1 or 3. In this event, each of these incorrect values is associated with an
equal probability of 1/(M − 1) = 0.333. Therefore, the overall probability of receiving the incorrect value of 0
is given by Pe · 1/(M − 1) = 0.1. Likewise, the probabilities of receiving the incorrect values of 1 and 3 are also
both equal to 0.1. Note that the probabilities of receiving the four possible symbol values in the set {0, 1, 2, 3}
are given by the set {0.1, 0.1, 0.7, 0.1}, which sum to 1.0, as may be expected.
In this exercise, your task is to write a Matlab function which simulates transmission over an M-ary sym-
metric channel. Your Matlab function is required to use the following line, in order to declare the function’s
name, inputs and outputs.
function received_vector = MSC(encoded_vector, radix, Pe)
Here, encoded_vector should accept the row vector y, while radix and Pe should accept the scalars M and
Pe, respectively. Your MSC function should check that the values of these inputs are self-consistent and if not,
it should generate an error message using the command provided on page 1. Otherwise, received_vector
should return the row vector yˆ. You can test the functionality and efficiency of your MSC function using the
script test_MSC, which you can download from the ELEC6238 resources webpage. I will use a script similar
to this one to mark the functionality and efficiency of your MSC function. Note that the mark that you receive
for efficiency in this exercise will be capped by the mark that you receive for functionality. This is because it is
easy to write a Matlab function that runs quickly, but does not have all of the required functionality.
When you are finished, include a listing of your MSC function in your Word document and submit this
function to the electronic handin system.
6
Exercise 4 - Monte-Carlo simulation
The error mitigation ability of the wireless communication scheme mentioned in Exercises 1, 2 and 3 may be
characterised using a Monte-Carlo simulation. Here, we can simulate the TDPC encoding of lots of message
vectors x, as well as their transmission over an M-ary symmetric channel having a particular symbol error
probability Pe, while counting the total number of symbol errors in the decoded vectors xˆ produced by the
TDPC decoder. The Symbol Error Ratio (SER) is given by the total number of symbol errors in the decoded
vectors xˆ divided by the total number of symbols in the message vectors x. We can repeat this experiment
for a range of different values for the symbol error probability Pe and plot the resultant SERs against Pe on
logarithmic axes, as exemplified in Figure 1. If a sufficiently high number of message vectors x have been
used during the simulation for each value of the symbol error probability Pe, then a nice smooth SER plot
will result. Note that the plots of Figure 1 were obtained by using 16 processors on one node of the Lyceum2
supercomputer5 for 24 hours. Each data point was obtained by continuing to generate new message vectors x,
until 10000 symbol errors had been observed in the corresponding decoded vectors xˆ.
In this exercise, your task is to write a Matlab script or function that performs a Monte-Carlo simulation of
the wireless communication scheme mentioned in Exercises 1, 2 and 3. This script or function should use an
ASCII text file to save the total number of symbol errors observed in the decoded vectors xˆ, as well as the total
number of symbols in the message vectors x, for each value of the symbol error probability Pe considered. Your
Matlab script or function should also plot the SER against the symbol error probability Pe on logarithmic axes,
as exemplified in Figure 1. Alternatively, you may prefer to use a second Matlab script or function to perform
the plotting. In this exercise, you may find it helpful to use a number of Matlab’s built in functions, such as
save, load, figure, subplot, title, xlabel, ylabel, xlim, ylim, box, hold, loglog and legend.
I will mark the functionality of your Matlab code by assessing the quality of your SER plot(s). More
specifically, I will be hoping to see nice smooth SER curves that are well annotated, that consider a good
selection of parameter values and that include results for a good selection of symbol error probability Pe values.
I will mark the efficiency of your Matab code by looking at your ASCII text file. In particular, I will be hoping
to see that each SER value has been calculated using an appropriate number of symbol errors in the decoded
vectors xˆ, as well as an appropriate number of symbols in the message vectors x.
When you are finished, include a listing of your Matlab scripts and/or functions in your Word docu-
ment, together with your SER plot(s) and one example of your ASCII text files. Also, submit these items
to the electronic handin system.
5You can find out more about Lyceum2 at http://www-mobile.ecs.soton.ac.uk/newcomms/?q=resources/lyceum/matlab
7
10−410−310−210−1100
10−6
10−4
10−2
100
M=2−ary TDPC
SE
R
Pe


i=2 j=2
i=3 j=3
i=4 j=4
i=5 j=5
10−410−310−210−1100
10−6
10−4
10−2
100
M=4−ary TDPC
SE
R
Pe


i=2 j=2
i=3 j=3
i=4 j=4
i=5 j=5
10−410−310−210−1100
10−6
10−4
10−2
100
M=8−ary TDPC
SE
R
Pe


i=2 j=2
i=3 j=3
i=4 j=4
i=5 j=5
10−410−310−210−1100
10−6
10−4
10−2
100
M=16−ary TDPC
SE
R
Pe


i=2 j=2
i=3 j=3
i=4 j=4
i=5 j=5
Figure 1: SER plots for TDPC codes having various combinations of radix M ∈ {2, 4, 8, 16}, rows i ∈ {2, 3, 4, 5}
and columns j ∈ {2, 3, 4, 5}, when communicating over an M-ary symmetric channel.
8
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468