I want to estimate the impulse response of the channel at the receiver. Assuming some arbitrary impulse response: h=[1 0.2 -0.4 0.0 0.6]. Once the equalizer is constructed, I get the equalizer weights in w1.

Question1) How to get back the channel estimates: Say,

x is the input to the channel,

d is the output of the channel which is the input to the equalizer,

w is the equalizer,

y is the output of the equalizer or is the equalized signal.

Ideally, y and x must be same. Then would the channel estimates be the least square solution i.e., inv(w^Tw)*w*d' or inv(w)?

Question2) Can I apply the LMS method for any source input --- Gaussian and non-Gaussian?

Below is the code for LMS equalizer

% number of samples       

np = 0.01; 
% noise power is 0.01 
sp = 1; 
% signal power is 1 which implies SNR = 20dB 
h=[1  0.2 -0.4 0.0 0.6];  %unknown   impulse  response       

x = sqrt(sp).*randn(1,N); 
d = conv(x,h); 
d = d(1:N) + sqrt(np).*randn(1,N); 
w0(1) = 0; 
% initial filter weights are 0 
w1(1) = 0; 
mu = 0.005; 
% step size is fixed at 0.005 
y(1) = w0(1)*x(1); 
% iteration at “n=0” 
e(1) = d(1) - y(1); 
% separate because “x(0)” is not defined 
w0(2) = w0(1) + 2*mu*e(1)*x(1); 
w1(2) = w1(1); 

for  n=2:N       

    y(n) = w0(n)*x(n) + w1(n)*x(n-1); 
    e(n) = d(n) - y(n); 
    w0(n+1) = w0(n) + 2*mu*e(n)*x(n); 
    w1(n+1) = w1(n) + 2*mu*e(n)*x(n-1); 
  • $\begingroup$ See my answer to this question for the code and example of computing the channel using the solution for the LMS equalizer and also gives more detailed explanation that may help answer your question: dsp.stackexchange.com/questions/31318/… $\endgroup$ Commented Aug 28, 2018 at 11:37
  • $\begingroup$ I went through your answer, thank you for the link. But certain things are not clear. Could you please clarify?(1) I don't know if your source input is assumed to be Gaussian or if LMS can be applied to non-Gaussian inputs as well. (2) If $w$ or h in your answer are the equalizer weights which are calculated assuming tx is known. But in my setting the input to the channel is unknown. (3) $c = h^{-1}$ or is it $t*pinv(r)$ is the channel estimate ? I don't quite get the notations and the method to obtain the channel coefficients. $\endgroup$
    – SKM
    Commented Aug 28, 2018 at 19:56
  • $\begingroup$ When you say Gaussian source what exactly is Gaussian in your case? Since we are using the source to estimate the frequency response of the channel, I believe it is more important that the source be white, or at least white across the spectrum of interest. To determine the LMS solution using the approach I showed, yes two out of the three unknowns (tx, rx and channel) must be known and then you can solve for the third. If the input to the channel is unknown, and can’t be reliably estimated by decisions then I am not sure how to solve for the channel in that case. $\endgroup$ Commented Aug 28, 2018 at 20:07
  • $\begingroup$ In the bottom graphic in my link, h is the solution for the equalizer coefficients, hence the inverse of the channel. If you swap tx and rx you instead get the response for the channel itself, but again you would need to know tx and rx to solve for the channel. If you don’t know what was transmitted and the only information you have is what was received (and you can’t use that to guess what was transmitted as in a decision directed solution), then I do not know how to solve for the channel. $\endgroup$ Commented Aug 28, 2018 at 20:12
  • $\begingroup$ Thank you for the clarifications. Once I get the equalizer coefficients, then should it be possible to get the channel impulse response as well since you said that the equalizer coefficients is the inverse of the channel. So, the channel is the inverse of the equalizer coefficients? Therefore, estimated channel impulse response = equalizer output/input to the equalizer? $\endgroup$
    – SKM
    Commented Aug 29, 2018 at 7:26

1 Answer 1


Note that what you're trying to do is equalization, as opposed to channel estimation. If we ignore the noise for the moment then, ideally, the concatenation of the equalizer and the channel (modeled as a linear system) should be a pure delay:

$$(h\star w)[n]\stackrel{!}{=}\delta[n-K]\tag{1}$$

where $h[n]$ is the channel impulse response, $w[n]$ are the coefficients of the linear equalizer, and $K$ is some delay that depends on the system design. So by using the LMS algorithm to adapt a linear equalizer you do not directly estimate the channel coefficients $h[n]$. As far as I know there is no straightforward way to reliably estimate the channel weights directly from the equalizer weights.

Regarding your second question, the LMS algorithm doesn't require the source signal to be Gaussian.

A final comment on your code: with only $2$ filter taps you won't be able to sufficiently equalize the given channel. And I would recommend to use vectors in the coefficient update, so you can use different filter lengths without changing your code.

  • $\begingroup$ thank you for your reply. But I am confused as equalizer coefficients are the inverse of the channel. LMS is estimating the source input which is the output of the equalizer. So, it should be possible to get the channel estimates. I thought $W=h^{-1}$. Blind system identification after equalization should be possible by using the equalizer output divided by the input to the equalizer. Or a least squares solution since now we know the estimated input to the channel (which is obtained from the equalizer output) and we know the output of the channel. $\endgroup$
    – SKM
    Commented Aug 29, 2018 at 7:30
  • $\begingroup$ This is what I am not sure -- how to estimate the channel using the equalization results -- should it be a least squares solution or simply a division? $\endgroup$
    – SKM
    Commented Aug 29, 2018 at 7:32
  • $\begingroup$ Just to check, after equalization if I use the equalized signal to obtain a set of estimated channel coeff then that should be close to the actual known channel impulse response, $h$. $\endgroup$
    – SKM
    Commented Aug 29, 2018 at 7:59
  • $\begingroup$ @SKM: The problem is that generally $1/W(z)$ is not a causal and stable filter, so it's not straightforward to estimate the channel from the equalizer coefficients. $\endgroup$
    – Matt L.
    Commented Aug 29, 2018 at 8:13
  • $\begingroup$ @MattL. If you reliably solve for the equalizer and have the received waveform before and after the equalizer, then you have the tx waveform before the channel (the output of the equalizer), and the rx waveform after the channel, so from that we can find the solution for the channel. Since the tx is found from the rx and equalizer coefficients, then we should be able to directly solve for the channel from the equalizer coefficients and either the waveform before or after the equalizer? $\endgroup$ Commented Aug 29, 2018 at 9:33

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.