## How does MATLAB downsample the output of the linear equalizer in a fractional comm.LinearEqualizer?

The documentation for the comm.LinearEqualizer explains that for fractionally spaced equalizers, where the sample rate of the input to the equalizer is an integer multiple of the symbol rate, the output of the equalizer has one sample per symbol. This seems to indicate that the equalizer is performing some sort of downsampling. How does this work?

If I take the final equalizer tap weights ("weights") and convolve them with the input to the equalizer, which is called "Data":

eq = comm.LinearEqualizer;

[FFEout,~,weights] = step(eq,Data,TrainingSequence);

FIRout = conv(Data,conj(weights),’same’);

I would expect the output of the convolution to be equal to an interpolated (upsampled). In other words, "FFEout" should be a downsampled version of "FIRout". However, this is not the case, as can be seen in the below plot; the signal is QPSK modulated, so the exact values for the I and Q channels are either +1 or -1.

The plot shows that the equalizer is working as expected (FFEout lines up nicely with the exact data). However, the fact that convolving the signal with the filter tap weights does not seem to correspond to the output of the equalizer has me confused, since the equalizer is just performing a convolution with optimized tap weights. Does MATLAB do something fancier than simple downsampling to obtain the output symbols from the equalizer?The documentation for the comm.LinearEqualizer explains that for fractionally spaced equalizers, where the sample rate of the input to the equalizer is an integer multiple of the symbol rate, the output of the equalizer has one sample per symbol. This seems to indicate that the equalizer is performing some sort of downsampling. How does this work?

If I take the final equalizer tap weights ("weights") and convolve them with the input to the equalizer, which is called "Data":

eq = comm.LinearEqualizer;

[FFEout,~,weights] = step(eq,Data,TrainingSequence);

FIRout = conv(Data,conj(weights),’same’);

I would expect the output of the convolution to be equal to an interpolated (upsampled). In other words, "FFEout" should be a downsampled version of "FIRout". However, this is not the case, as can be seen in the below plot; the signal is QPSK modulated, so the exact values for the I and Q channels are either +1 or -1.

The plot shows that the equalizer is working as expected (FFEout lines up nicely with the exact data). However, the fact that convolving the signal with the filter tap weights does not seem to correspond to the output of the equalizer has me confused, since the equalizer is just performing a convolution with optimized tap weights. Does MATLAB do something fancier than simple downsampling to obtain the output symbols from the equalizer? The documentation for the comm.LinearEqualizer explains that for fractionally spaced equalizers, where the sample rate of the input to the equalizer is an integer multiple of the symbol rate, the output of the equalizer has one sample per symbol. This seems to indicate that the equalizer is performing some sort of downsampling. How does this work?

If I take the final equalizer tap weights ("weights") and convolve them with the input to the equalizer, which is called "Data":

eq = comm.LinearEqualizer;

[FFEout,~,weights] = step(eq,Data,TrainingSequence);

FIRout = conv(Data,conj(weights),’same’);

I would expect the output of the convolution to be equal to an interpolated (upsampled). In other words, "FFEout" should be a downsampled version of "FIRout". However, this is not the case, as can be seen in the below plot; the signal is QPSK modulated, so the exact values for the I and Q channels are either +1 or -1.

The plot shows that the equalizer is working as expected (FFEout lines up nicely with the exact data). However, the fact that convolving the signal with the filter tap weights does not seem to correspond to the output of the equalizer has me confused, since the equalizer is just performing a convolution with optimized tap weights. Does MATLAB do something fancier than simple downsampling to obtain the output symbols from the equalizer? equalizer, matlab, tap weights, fractionally spaced MATLAB Answers — New Questions