I am doing a project in MATLAB about the fractionally spaced equalizer. The method that i have chosen to update the tap weight coefficients is the LMS algorithm. Here is the block scheme that i have tried to follow:
- x(k) are the elements of the received training sequence.
- p(k) are the tap weight coefficients.
The vectors x(k) and p(k) have the same number of elements as there are tap weights. As it can be seen y(k) is the output of the equalizer. The formulas to calculate the error and then update the tap weights are the following:
for the training phase and
for the tracking phase.
This is the MATLAB code:
The training phase
for k = 1:2*length(trainSymtx)
for i = N+1:2*length(trainSymtx)-N
currSymbols = train_syms_real(i-N:i+N);
y(k) = tapWeights * currSymbols';
if mod(k, 2) == 0 % considero solo 'k' pari
a = k/2;
error = y(k) - trainSymtx(a);
x = conj(train_syms_real(i-N:i+N));
tapWeights = tapWeights - stepSize * error * x;
end
end
end
The tracking phase
for b = 1:2*length(trainSymtx)
for m = N+1:2*length(trainSymtx)-N
currSymbols = train_syms_real(m-N:m+N);
y(b) = tapWeights * currSymbols';
if mod(b, 2) == 0
w = b/2;
c_est(w) = y(b);
error_est = y(b) - c_est(w);
x = conj(train_syms_real(m-N:m+N));
tapWeights = tapWeights - stepSize * error_est * x;
end
end
end
My questions are the following:
What are exactly the ĉ symbols? From the scheme it looks like the vector ĉ is just a part of the vector y(k) that we choose via the decision block.
What is the decision block and how it works? How does it decides which symbols to consider and which ones to eliminate?
How to implement this block scheme in MATLAB? I have done most of it but I'm not sure how to implement the switch between training and tracking.
The help will be gratefully appreciated.