Vous êtes sur la page 1sur 2

Delft University of Technology

Faculty of Electrical Engineering, Mathematics, and Computer Science


Circuits and Systems Group

ET4235: Digital Signal Processing


Geert Leus and Patrick Dewilde
Exercise
In this exercise, a very simple communications system has to be implemented and simulated
in Matlab. The exercise consists of three parts: (a) implementing the system model of the
communications system; (b) estimating the unknown propagation channel using pilots; and
(c) using the estimated channel to estimate unknown data symbols. Make a short report
containing printouts of the required Matlab files, plots, and answers, and bring it with you
at the oral exam.

System Model
We will consider a very simple single-carrier communications system where data symbols
s[k] are transmitted over the air without any coding. At the receiver, the received signal is
sampled resulting into the sequence x[k]. The relationship between x[k] and s[k] can simply
be modeled as x[k] = h[k] ? s[k] + n[k], where h[k] represents the filtering operation by the
transmitter, the receiver, and the propagation environment, and n[k] stands for the additive
noise. The goal now is to implement this system in Matlab.
1. Construct a data symbol sequence s = [s[0],
. . . , s[K 1]]T , where the entries are
s[1],
QPSK with variance 1, i.e., s[k] {1/ 2 j/ 2}. More specifically, generate s by
transforming your name to QPSK. Make a printout of s.
Hint: To transform your name to QPSK, follow these steps: (i) use the binary ASCII
codes
your name into a binary number, (ii) change a 0 into
in Table 1 to transform

1/ 2 and a 1 into 1/ 2, and (iii) group the numbers two by two and transform every
group into a QPSK symbol by taking the first number as the real part and the second
number as the imaginary part of the QPSK symbol.
2. Now generate a function comsystem which describes the transmission of the constructed
sequence s = [s[0], s[1], . . . , s[K 1]]T over the channel h = [h[0], h[1], . . . , h[L 1]]T ,
resulting into the output x = [x[0], x[1], . . . , x[K + L 1]]T . Assume that the channel
h[k] is zero-mean complex Gaussian with variance 1. The noise n[k] in the system is
also assumed to be zero-mean complex Gaussian, but with variance 2 . This variance
2 should be chosen according to the signal-to-noise ratio (SNR), which is defined as
the ratio of the signal energy over the noise energy expressed in dB, i.e., SN R =
10 log(L/ 2 ). The function comsystem will hence be a function of s, L, and the SNR:
function x = comsystem(s,L,SNR)
Hint: You can use the Matlab command conv to carry out a convolution.

Table 1: Binary ASCII codes


BIN
01100001
01100010
01100011
01100100
01100101
01100110
01100111

CHAR
a
b
c
d
e
f
g

BIN
01101000
01101001
01101010
01101011
01101100
01101101
01101110

CHAR
h
i
j
k
l
m
n

BIN
01101111
01110000
01110001
01110010
01110011
01110100
01110101

CHAR
o
p
q
r
s
t
u

BIN
01110110
01110111
01111000
01111001
01111010

CHAR
v
w
x
y
z

3. Test your system model for various values of L and SN R, e.g., L = 1, 2, 3 and SN R =
0, 10, 20 dB. Plot x for a few simulations using plot(x,*). Can you observe some
structure in these plots? Is it possible to detect your name from x?

Channel Estimation
In this part, we will assume that the receiver knows your name, i.e., it knows s (and of course
x). Based on this knowledge, the receiver will estimate h using the MVU and MMSE method
(for the latter it is also assumed that the variance of the noise 2 is known at the receiver).
1. Write two functions mvu and mmse, respectively, to perform the MVU and MMSE channel
estimation.
function h_est = mvu(x,s,L)
function h_est = mmse(x,s,L,sigma)
2. Take L = 3. Make for each estimation method a plot of the average channel estimation
error as a function of the SNR, e.g., consider SN R = 0, 1, 2, . . . , 20 dB. The channel
estimation error is given by kh hest k2 /L and the average should be taken over 100
runs, where in each run you take a new channel and noise realization. Which method
performs the best? Is there a big difference in performance?

Data Detection
In this part, we will use the estimated channel to recover your name. First of all, note that
the MVU and MMSE symbol estimation algorithms are the same as the ones to estimate the
channel, simply change the inputs s and L by h and K, respectively, and change the output
hest by sest .
Take L = 3 and SN R = 20 and run the MVU and MMSE channel estimators. Based
on these estimated channels try to recover your name s, using the MVU and MMSE symbol
estimation algorithms (hence, do not plug in the true channels but the estimated channels).
For simplicity, use the MVU channel estimator together with the MVU symbol estimator and
the MMSE channel estimator together with the MMSE symbol estimator. Plot s est for the
two simulations using plot(s_est,*). Can you detect your name from s est ?
2

Vous aimerez peut-être aussi