Let $y[n]= h*x[n] + w[n]$, where $h$ is an unknown but deterministic parameter, $x[n]$ is a BPSK random variable with equal probability of +1 and -1, $w[n]$ are i.i.d. Gaussian with zero mean and unknown variance . Given $N$ observations find the estimate of $h$, and variance of noise.

$x[n]$ and $w[n]$ are independent.

  • $\begingroup$ If we take average values of $y$, it will eliminate the effect of $w$ but will not help us estimate $h$ because $x$ is not known to you. If we consider average of squared values of $y$, $ P = \frac{1}{N}\sum_0^{N-1}y^2[n] = \frac{1}{N}\sum_0^{N-1}(h^2x_n^2 + w_n^2 + 2hx_nw_n) $ The expectation value of above estimator is $ E(P) = \frac{1}{N}\sum_0^{N-1}(h^2 \times 1 + \sigma^2 + 0) = h^2 + \sigma^2 $ Still you have 2 unknowns with only 1 estimator. $\endgroup$
    – jithin
    Commented Mar 30, 2020 at 17:02
  • $\begingroup$ Can we assume h is not time varying? $\endgroup$ Commented Apr 29, 2020 at 2:46

1 Answer 1


Squaring Method

The input signal $x[n]$ can take two values: $+1$ or $-1$. After being multiplied by $h$, the signal becomes $|h|e^{j\angle h}$ (if $x[n]=+1$) or $|h|e^{j(\pi + \angle h)}$ (if $x[n]=-1$). By squaring this we get, $|h|^2e^{j2\angle h}$. Both points get mapped to this. Now we can pick out the magnitude and phase of $h$. In summary, the steps are:

  1. Square $y[n]$ to get $z[n]=y^2[n]$.
  2. Get the magnitude, $\hat{|h|}=\sqrt{\bigg|\frac{1}{N}\sum_n z[n]\bigg|}$. It was pointed out in the comments that this is a biased estimate with bias $\sigma^2$, so it is not favorable for a large $\sigma$. I describe another way to estimate $\sigma^2$ (without using $\hat{h}$) so that we can use this $\hat{\sigma}^2$ to remove the bias from $\hat{|h|}$.
  3. Get the phase, $\angle h=\frac{1}{2N} \sum_n \angle z[n]$
  4. Use $\hat{h}$ to get the noise variance, $\hat{\sigma}^2=\bigg(\frac{1}{N}\sum_n z[n]\bigg)-\hat{h}^2$. This comes from the fact that $E\big[z[n]\big]=h^2+\sigma^2$ (also see the clustering method is a better way to go about this as it does not depend on any other estimates).

Caveat: This method is valid only for phase offsets within $\pm \frac{\pi}{2}$. Anything beyond that, the received signal becomes indistinguishable and there are multiple phase shifts which could give the same signal.

Clustering Method

If $h$, can be correctly determined, then you can take hard decisions and calculate the noise variance using the distance of the received symbols from the decision you made.

If $h$ can't be determined right away, then this clustering based estimate of $|h|$ and $\sigma^2$ can be used: We know there should be two clusters ($\pm 1$) so we can use a simple method like k-means (https://en.wikipedia.org/wiki/K-means_clustering) with $k=2$. The algorithm is:

  1. Run k-means on the received samples and get a list of labels back labeling each sample to either cluster $1$ or $2$. Let $S_1$ be the set of sample indices in cluster $1$ and $S_2$ be the set of sample indices in cluster $2$.

  2. Now we are going to take all the points in each cluster, shift them be zero mean and take the variance (this will give us a noise variance estimate for each cluster). Then we will average over all of the cluster noise variance estimates to form the final estimate. $\hat{\sigma}^2=\frac{\bigg( \text{var}\big(y[n]-E[y[n]] \big)\big|_{n \in S_1} + \text{var}\big(y[n]-E[y[n]] \big)\big|_{n \in S_2} \bigg)}{2}$

  3. Now we can take the estimate from step $2$ and subtract off the bias term which we estimated here as $\hat{\sigma}^2$ to get the refined estimate $\hat{|h|}_0=\hat{|h|}-\hat{\sigma}^2$. You could also get $|h|$ using the magnitude of the cluster means, $|\hat{h}|=\frac{\text{E}\big(y[n]\big|_{n \in S_1}\big)+\text{E}\big(y[n]\big|_{n \in S_2}\big)}{2}$.

There is also a way get $\angle h$ from the clusters but it too has the criteria that $\angle h$ must be less than $\pm \frac{\pi}{2}$ so I will not detail it here.

Long story short: $|h|$ and $\sigma^2$ are doable, but $\angle h$ is only doable for some cases.

Code: https://github.com/B-William/DSPSE/blob/master/blindEstimationOfSignalParameterAndNoiseVariance.m

  • $\begingroup$ And how would you determine the ML of x without knowing h, wouldn't the value of h appear in the ML of X $\endgroup$ Commented Mar 31, 2020 at 13:41
  • $\begingroup$ The above answer is being edited $\endgroup$
    – Engineer
    Commented Mar 31, 2020 at 13:42
  • $\begingroup$ But squaring the received samples will involve cross product terms between h*x(n) and w(n)... since there is no expectations taken in the answer then these do not disappear...I prefer to take modulus of y(n) , that works better I think $\endgroup$ Commented Mar 31, 2020 at 14:11
  • $\begingroup$ Also how do you get the variance of noise which is unknown $\endgroup$ Commented Mar 31, 2020 at 14:18
  • $\begingroup$ The cross terms average to zero since the noise is zero mean. I don't need the noise variance since it doesn't appear in my answer at all. All you need is the received samples (that includes the signal plus noise). $\endgroup$
    – Engineer
    Commented Mar 31, 2020 at 14:48

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.