<< Chapter < Page | Chapter >> Page > |
Define the matrix
The purpose of this definition is to rewrite [link] in terms of $\Psi $ :
Since ${S}^{T}[I-R{\left({R}^{T}R\right)}^{-1}{R}^{T}]S$ is not a function of $F$ , the minimum of ${J}_{LS}$ occurs at the $F$ that minimizes $\Psi $ . This occurs when
assuming that ${\left({R}^{T}R\right)}^{-1}$ exists. A matrix is invertible as long as it has noeigenvalues equal to zero. Since ${R}^{T}R$ is a quadratic form it has no negative eigenvalues. Thus, all eigenvalues must be positivein order for it to be invertible. The corresponding minimum achievable by ${J}_{LS}$ at $F={F}^{\u2020}$ is the summed squared delayed source recovery error. This is the remaining term in [link] ; that is,
The formulas for the optimum $F$ in [link] and the associated minimum achievable ${J}_{LS}$ in [link] are for a specific $\delta $ . To complete the design task, it is also necessary to findthe optimal delay $\delta $ . The most straightforward approach is to set up a series of $S=RF$ calculations, one for each possible $\delta $ , to compute the associated values of ${J}_{LS}^{\mathrm{min}}$ , and pick the delay associated with the smallest one.
This procedure is straightforward to implement in M
atlab ,
and the program
LSequalizer.m
allows you to play
with the various parameters to get a feel for theireffect. Much of this program will be familiar from
openclosed.m.
The first three lines define
a channel, create a binary source, and thentransmit the source through the channel using the
filter
command. At the receiver, the
data are put through a quantizer, and then the erroris calculated for a range of delays. The new part is
in the middle.
b=[0.5 1 -0.6]; % define channelm=1000; s=sign(randn(1,m)); % binary source of length m
r=filter(b,1,s); % output of channeln=3; % length of equalizer - 1
delta=3; % use delay <=n
p=length(r)-delta;R=toeplitz(r(n+1:p),r(n+1:-1:1)); % build matrix R
S=s(n+1-delta:p-delta)'; % and vector Sf=inv(R'*R)*R'*S % calculate equalizer f
Jmin=S'*S-S'*R*inv(R'*R)*R'*S % Jmin for this f and deltay=filter(f,1,r); % equalizer is a filter
dec=sign(y); % quantize and count errorserr=0.5*sum(abs(dec(delta+1:end)...
-s(1:end-delta)))
LSequalizer.m
find a LS equalizer f for the channel b
(download file)
The variable
n
defines the length of the equalizer,
and
delta
defines the delay that will be used
in constructing the vector
$S$ defined in
[link] (observe that
delta
must be positive and less than or equal to
n
).
The Toeplitz matrix
$R$ is defined in
[link] and
[link] , and the equalizer coefficients
f
are computed as in
[link] .
The value of minimum achievable performance is
Jmin
, which is calculated as in
[link] .
To demonstrate the effect of the equalizer, thereceived signal
r
is filtered by the equalizer
coefficients, and the output is then quantized.If the equalizer has done its job (i.e., if the eye is open),
then there should be some shift
sh
at which no errors occur.
For example, using the default channel
b=
[0.5 1 -0.6],and length 4 equalizer (
n=3
), four
values of the delay
delta
give
Notification Switch
Would you like to follow the 'Software receiver design' conversation and receive update notifications?