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 ∑¯h←∑h; 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,i←1MTrBd−1∑¯hd,i+μ¯hd,iμ¯hd,iH, and update γlist with γd,i.
 4:  end for
 5:  Ld′←min(Ld,LCmax).
 6:  Bd←1Ld′∑i=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: ∑0←diagΓ1⊗B1,Γ2⊗B2,…,ΓC⊗BC.
 20: Obtain U according to (11).
 21: p(1)← FindIndex(γlist≥γth) and U←U[:,p(1)⊗(1:M)].
 22: Refer to (32) and (33).
Check stopping conditions:
 23: r←r+1.
 24: return the sub-part of ClusterEvolution until r≥rmax 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.