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: enter image description here

  • 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: Training phase

for the training phase and

Tracking phase

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;


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;


My questions are the following:

  1. 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.

  2. What is the decision block and how it works? How does it decides which symbols to consider and which ones to eliminate?

  3. 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.


1 Answer 1


The way it is drawn suggests that $\hat{c}[k]$ samples are the complex decisions for the demodulated symbols. This assumes correct timing to only use the samples for demodulation. Instead, assuming a training sequence is used, I recommend comparing all samples to the “ideal” waveform given by the training sequence at the same sampling rate as it would appear in this location of the receiver.

As to MATLAB code, please see this post here which details the process to find the coefficients when post processing is used. Working code is typically out of scope for this site, but for adaptive solutions see the LMS algorithm (very easy but slow to converge) or Recursive Least Squares (more complex, fast convergence and good tracking).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.