# Calculation of channel autocorrelation for LMMSE

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

• 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. – AlexTP May 14 at 9:48
• @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? – Luuke L May 14 at 12:07
• 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$. – AlexTP May 14 at 14:48
• for the estimation en.wikipedia.org/wiki/Estimation_of_covariance_matrices – AlexTP May 14 at 14:56