Skip to main content
. 2021 Jul 18;21(14):4889. doi: 10.3390/s21144889
Algorithm 2: Noise-Corrected Clustered-Sparse Channel Estimation Algorithm
Input: the received signal y; the noise variance λ; the length of discreted paths L;
  the maximum number of iterations rmax; the maximun number of discreted
  paths in one cluster LCmax; the threshold for prunning small
  hyperparameters γth; the threshold to stop the whole algorithm ϵ.
Initialize: The PB-CSBL algorithm is utilized to obtain the posterior mean μ¯hμh
  and covariance matrix ¯hh; the noise vector λ=λIK; the list of path
  power γlist=1L; the iteration counter r=0.
Cluster Evolution:
 1: for d=1,2,,Cdo
 2:  for i=1,2,,Ld do
 3:   γd,i1MTrBd1¯hd,i+μ¯hd,iμ¯hd,iH, and update γlist with γd,i.
 4:  end for
 5:  Ldmin(Ld,LCmax).
 6:  Bd1Ldi=1Ld¯hd,i+μ¯hd,iμ¯hd,iHγd,i using the Ld most significant continuous paths.
 7:  βdα1α0, where α1 and α0 can be obtained through Bd.
 8: end for
Cluster Partition:
 9: p(0) FindIndex(0<γlist<γth).
 10: ifp(0) is not empty then
 11:  γlist(old)γlist and γlist[p(0)]0.
 12:  CLS Split(CLS, p(0)), where CLS is splitted into C clusters according
  to p(0).
 13: end if
 14: for d=1,2,,Cdo
 15:  Update Rd, Γd and Bd in CLS according to p(0), γlist and βd, respectively.
 16: end for
Data Detection:
 17: Refer to (36) and (37).
Noise Measurement:
 18: Update the noise vector λ according to (38).
Channel Estimation:
 19: 0diagΓ1B1,Γ2B2,,ΓCBC.
 20: Obtain U according to (11).
 21: p(1) FindIndex(γlistγth) and UU[:,p(1)(1:M)].
 22: Refer to (32) and (33).
Check stopping conditions:
 23: rr+1.
 24: return the sub-part of ClusterEvolution until rrmax or γlistγlist(old)22<ϵ.
Output: the pruned channel μ¯h with the covariance matrix ¯h, the cluster list CLS,
  the noise vector λ, and the transmitted data symbols xd(m) for m=1,2,,M.