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 Mar 30 '20 at 17:02
  • $\begingroup$ Can we assume h is not time varying? $\endgroup$ – Dan Boschen Apr 29 '20 at 2:46

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$ – Dsp guy sam Mar 31 '20 at 13:41
  • $\begingroup$ The above answer is being edited $\endgroup$ – Engineer Mar 31 '20 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$ – Dsp guy sam Mar 31 '20 at 14:11
  • $\begingroup$ Also how do you get the variance of noise which is unknown $\endgroup$ – Dsp guy sam Mar 31 '20 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 Mar 31 '20 at 14:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.