Skip to main content
. 2021 Jul 18;21(14):4889. doi: 10.3390/s21144889
Algorithm 1: Partition-Based Clustered-Sparse Bayesian Learning Algorithm
Input: the received pilot signal yp; the dictionary matrix UP; the noise variance λ;
  the length of discrete paths L; the maximum number of iterations rmax;
  the maximum number of discrete paths in one cluster LCmax; the threshold for
  prunning small hyperparameters γth; the threshold to stop the whole
  algorithm ϵ.
Initialize: the list of path power γlist=1L; the number of clusters C=1;
  the list of cluster structure CLS : Γ1=IL, B1=IM and the delay range of
  the 1st cluster Rd=[0,L−1]; the iteration counter r=0.
Channel Estimation:
 1: ∑0←diagΓ1⊗B1,Γ2⊗B2,…,ΓC⊗BC.
 2: ∑h=∑0−∑0UPHλI+UP∑0UPH−1UP∑0.
 3: μh←λ−1∑hUPHyp.
Cluster Evolution:
 4: for d=1,2,…,Cdo
 5:  for  i=1,2,…,Ld do
 6:   γd,i←1MTrBd−1∑hd,i+μhd,iμhd,iH, and update γlist with γd,i.
 7:  end for
 8:  Ld′←min(Ld,LCmax).
 9:  Bd←1Ld′∑i=1Ld′∑hd,i+μhd,iμhd,iHγd,i using the Ld′ most significant continuous paths.
 10:  βd←α1α0, where α1 and α0 can be obtained through Bd.
 11: end for
Cluster Partition:
 12: p(0)← FindIndex(0<γlist<γth).
 13: if p(0) is not empty then
 14:  γlist(old)←γlist and γlist[p(0)]←0.
 15:  CLS← Split(CLS, p(0)), where CLS is splitted into C clusters
    according to p(0).
 16:  p(1)← FindIndex(γlist≥γth) and UP←UP[:,p(1)⊗(1:M)].
 17: end if
 18: for d=1,2,…,Cdo
 19:  Update Rd, Γd and Bd in CLS according to p(0), γlist and βd, respectively.
 20: end for
Check stopping conditions:
 21: r←r+1.
 22: return the sub-part of ChannelEstimation until r≥rmax or
    ∥γlist−γlist(old)∥22<ϵ.
Output: the pruned channel μh with the covariance matrix ∑h and the
 cluster list CLS.