I am currently trying to implement an LMMSE estimator/equalizer for a python based ofdm receiver. The actual reception is done with a SDR and iq-samples are stored in a file for the "ofdm-receiver" process in Python.

LMMSE theory

I've read through a multitude of resources. The final (simplified) formula for LMMSE i am trying to implement is (Edfors et. Al.):

$\hat{H}_{LMMSE} = R_{HH} (R_{HH} + \frac{\beta}{SNR}I)^{-1} \hat{H}_{LS}$

$R_{hh}$ denotes the Channel autocorrelation, $\beta$ is a modulation mapping dependent constant, $SNR$ the signal to noise ratio, $I$ an identity Matrix and $\hat{H}_{LS}$ the Least Squares channel estimate.

I've accomplished the computation for all the elements successfully (I think) except for the channel autocorrelation matrix. I am not shure how to compute this matrix correctly. As I dont have the true channel coefficients $H$, I intend to use the estimate $\hat{H}_{LS}$ instead. That LS-estimate is obtained by using the Long Training Sequence (LTS) from the preamble. $R_{HH}$ is computed as:

$R_{HH} = E\{HH^H\}$ with $(.)^H$ beeing the Hermetian operation.

I am working with a SISO system, so I only have one vector of estimated channel coefficients $\hat{H}_{LS}$ with dimensions $(64\times1)$. I've tried using numpys correlate function as well as the corrcoef function. So far, the resulting $\hat{H}_{LMMSE}$ is always incorrect and leads to worse equalization than using only the $\hat{H}_{LS}$. I would try to implement it manually, but I dont know how I would go about that. I know, that for equally propable outcomes of a random variable, the expectation simplifies to the arithmetic mean of all outcomes. So from Wikipedia: Autocorrelation and this StackExchange answer i conclude:

$R_{HH} = E[HH^H] = E\begin{bmatrix} \begin{bmatrix}H_1 \\H_2\\ \vdots \\ H_n \end{bmatrix} \begin{bmatrix}\bar{H_1} \bar{H_2} \dots \bar{H_n}\end{bmatrix} \end{bmatrix} = \begin{bmatrix} E[H_{1}\bar{H_{1}}]\quad E[H_{1}\bar{H_{2}}]\quad \cdots\quad E[H_{1}\bar{H_{n}}]\\ E[H_{2}\bar{H_{1}}]\quad E[H_{2}\bar{H_{2}}]\quad \cdots\quad E[H_{2}\bar{H_{n}}]\\ \vdots\quad\quad\quad \vdots\quad\quad \ddots\quad\quad \vdots\\ E[H_{n}\bar{H_{1}}]\quad E[H_{n}\bar{H_{2}}]\quad \cdots\quad E[H_{n}\bar{H_{n}}]\\ \end{bmatrix}$

For complex valued random variable $Z$. I've come to understand (StackExchange), that $H_1 H_2 \dots H_n$ are not the actual realizations of my random variable $H$ but rather random variables on their own.

My Question

  1. I don't really understand how to compute/implement the auto-correlation matrix $R_{HH}$. I saw that one would have to estimate it (Wiener Filter?) but I don't understand how to apply it to my ofdm case.
  2. What dimensions should the identity matrix $I$ have?
  3. My $SNR$ calculation follows (Edfors et. Al.): $SNR = \frac{E[\mid x_k \mid^2]}{\sigma_n^2}$ Where I interpreted the term in the numerator as the signal energy. Is that correct?

NOTE Maybe it is useful know that I don't have to realize a real time performance, since I am working on prerecorded data.

Thank you for your time and help! Cheers Lucas

  • $\begingroup$ 1) you need to assume a multi-path channel model, from which $R_{HH}$ can be derived. Edfors et al, in the paper you cited, did calculate the autocorrelation for Rayleigh multi-tap channels. 2) same dimension of $R_{HH}$ 3) it depends what do you mean by 'signal'. The $\mathbf{X}$ is well-defined in the paper. I would say that this is the average power of constellation. $\endgroup$
    – AlexTP
    Commented May 14, 2020 at 9:48
  • $\begingroup$ @AlexTP Thank you for the insight. So in practice $R_{HH}$ is just calculated via a channel model that is assumed to fit the situation (like rayleigh multi-tap)? In the case of the paper (Edfors et. al.) (I assume you read it), the formula in Appendix B for $r_{m,n}$ gives the matrix elements? $\endgroup$
    – Luuke L
    Commented May 14, 2020 at 12:07
  • $\begingroup$ yes and yes. The key component is $R_{HH} = \mathbb{E}(H^H H)$, with $\mathbb{E}()$ mean expected value. Therefore If you do not know channel statistics, you can estimate $R_{HH}$ by using, say, thousands realizations of $H$. $\endgroup$
    – AlexTP
    Commented May 14, 2020 at 14:48
  • $\begingroup$ for the estimation en.wikipedia.org/wiki/Estimation_of_covariance_matrices $\endgroup$
    – AlexTP
    Commented May 14, 2020 at 14:56


Your Answer

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