The BASSAMP algorithm—introduced in [15] and depicted in Algorithm 1—aims at recovering **X** from **Y** in (10). It utilizes the knowledge of **A**, the signal prior, and the joint sparsity structure.

Let us briefly summarize how Algorithm 1 works.

AMP decouples each measurement vector **y**
_{
b
} of the measurement formulation (10) into *N* uncoupled scalar measurements of the form (using random variables, details see [15, 28])

$$ \mathsf{u}_{n,b} = \mathsf{x}_{n,b} + \widetilde{\mathsf{w}}_{n,b}, $$

((12))

where the noise \(\widetilde {\mathsf {w}}_{n,b}\) accounts for the measurement noise and the undersampling noise. It is assumed to be Gaussian distributed as \(\widetilde {\mathsf {w}}_{n,b} \sim \mathcal {N}(0,\beta _{b})\). This assumption is satisfied in the asymptotic case (*M*,*N*→*∞* while \(\frac {M}{N}=const.\)) and approximately satisfied in finite but high dimensions. The decoupled measurement (12) refers to line 5 of Algorithm 1. The effective noise variance *β*
_{
b
} is estimated in line 6, and the current estimate for **x**
_{
b
} is computed in line 7 using the minimum mean squared error (MMSE) estimator function *F*(·;·,·) that will be defined later. A residual is computed in line 8. Above points subsume the Bayesian approximate message passing (BAMP) [21–23] iteration that is executed for all *N*
_{
B
} blocks. In each BAMP iteration, the signal vector **x**
_{
b
} is newly estimated. The energy of the residual decreases over iterations, and so does the effective noise variance *β*
_{
b
} — the MMSE estimator *F*(·;·,·) acts as a denoiser. In line 9, the extrinsic group update function *U*
_{
G
}(·,·,·) enforces the joint sparsity structure. This is done via binary latent variables that indicate whether a signal entry is zero or nonzero; in a probabilistic manner, the prior probability for a specific signal entry to be zero is updated. The likelihood ratios that are generated by the extrinsic group update function are converted into new prior probabilities in line 10. After several iterations of BASSAMP, a consensus emerges. For a detailed derivation, we refer the interested reader to [15].

The algorithm assumes independently distributed signal entries for the BAMP iteration, where the prior distribution of the *n*th entry of the *b*th signal vector is denoted as \(f_{\mathsf {x}_{n,b}\phantom {\dot {i}\!}}(x_{n,b})\). This prior plays a major role in the computation of the functions *F*(·;·,·), *F*
^{′}(·;·,·), and *U*
_{
G
}(·,·,·). Therefore, let us specify the signal prior for the RFID scenario, which is essentially dictated by the channel model.

### 5.1 Channel model and distribution

As illustrated by Fig. 1, we employ a widely used dyadic channel model (see, e.g., [6, 8, 25]) where the channel coefficients comprise a forward channel \(h_{k}^{(\mathrm {f})}\) and a backward channel \(h_{r,k}^{(\mathrm {b})}\). The total channel from the transmit antenna to the *k*th tag and back to the *r*th receive antenna reads

$$ h_{r,k} = h_{k}^{(\mathrm{f})} h_{r,k}^{(\mathrm{b})}. $$

((13))

We assume that the forward and backward channel coefficients are distributed according to a circularly symmetric complex normal distribution such that

$$\begin{array}{*{20}l} \mathsf{h}_{k}^{(\mathrm{f})} &\sim \mathcal{CN}\left(0,{\sigma^{(\mathrm{f})}}^{2}\right), \end{array} $$

((14))

$$\begin{array}{*{20}l} \mathsf{h}_{r,k}^{(\mathrm{b})} &\sim \mathcal{CN}\left(0,{\sigma^{(\mathrm{b})}}^{2}\right). \end{array} $$

((15))

In the sequel, we consider the separation of the channel coefficients into real and imaginary parts:

$$\begin{array}{*{20}l} \mathsf{h}_{k}^{(\mathrm{f})} &= \mathsf{h}_{k}^{(\mathrm{f},\mathfrak{R)}} + j \mathsf{h}_{k}^{(\mathrm{f},\mathfrak{I)}}, \end{array} $$

((16))

$$\begin{array}{*{20}l} \mathsf{h}_{r,k}^{(\mathrm{b})} &= \mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{R)}} + j \mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{I)}}, \end{array} $$

((17))

where the real and imaginary parts obey a zero mean normal distribution with half the original variance, respectively. The total channel (13) can now be expressed by

$$ {\begin{aligned} \mathsf{h}_{r,k} &= \mathsf{h}_{r,k}^{\mathfrak{(R)}} + j \mathsf{h}_{r,k}^{\mathfrak{(I)}}\\ &= \left(\mathsf{h}_{k}^{(\mathrm{f},\mathfrak{R)}}\mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{R)}} - \mathsf{h}_{k}^{(\mathrm{f},\mathfrak{I)}}\mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{I)}}\right) +j \left(\mathsf{h}_{k}^{(\mathrm{f},\mathfrak{R)}} \mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{I)}} + \mathsf{h}_{k}^{(\mathrm{f},\mathfrak{I)}} \mathsf{h}_{r,k}^{(\mathrm{b},\mathfrak{R)}}\right). \end{aligned}} $$

((18))

In order to obtain the distribution of the real and imaginary parts of h
_{
r,k
}, we remember the following relation ([29] Proposition 2.2.5): consider four random variables \(\mathsf {v}_{1},\mathsf {v}_{2}\sim \mathcal {N}(0,{\sigma _{a}^{2}})\) and \(\mathsf {v}_{3},\mathsf {v}_{4}\sim \mathcal {N}(0,{\sigma _{b}^{2}})\); the term v=v
_{1}
v
_{3}−v
_{2}
v
_{4} is Laplace distributed with probability density function (PDF)

$$ f_{\mathsf{v}}(v) = \frac{1}{2\sigma_{a}\sigma_{b}}\exp\left(-\frac{1}{\sigma_{a}\sigma_{b}}|v|\right). $$

((19))

Applying this to (18), we obtain the PDF

$$ f_{\mathsf{h}}(h) = \frac{1}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}\exp{\left(-\frac{2}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}} |h|\right)}, $$

((20))

where *h* is a placeholder for the real part \(\mathsf {h}_{r,k}^{\mathfrak {(R)}}\) or imaginary part \(\mathsf {h}_{r,k}^{\mathfrak {(I)}}\) of the total channel (13).

### 5.2 Sparsity enforcing signal prior

The BASSAMP algorithm requires the specification of a signal prior distribution. In (20), we specified the distribution of the *nonzero* entries in the random matrix \(\boldsymbol {\mathsf {X}}=[\boldsymbol {\mathsf {x}}_{1},...,\boldsymbol {\mathsf {x}}_{N_{B}\phantom {\dot {i}\!}}]\). A realization thereof, **X**, contains the channel realizations as nonzero entries. The prior of signal entry x
_{
n,b
} reads

$$ f_{\mathsf{x}_{n,b}}(x_{n,b}) = \gamma_{n,b} \delta(x_{n,b}) + (1-\gamma_{n,b})\,\, f_{\mathsf{h}}(x_{n,b}), $$

((21))

where *γ*
_{
n,b
} is the probability that the *n*th signal entry of the *b*th vector is zero. If the number of activated tags, *K*, is known a priori, the initial value computes as \(\gamma _{n,b}=1-\frac {K}{N}\). In BASSAMP, this probability is adapted in each iteration, and it is sufficient to initialize it with a very coarse assumption of the number of activated tags; details follow in Section 6.

### 5.3 Specification of functions

Let us now discuss the computation of the functions (required in Algorithm 1, iteration index *t* omitted)

$$\begin{array}{*{20}l} {}F\left(u_{n,b}; \beta_{b}, \gamma_{n,b}\right) &= \mathbb{E}_{\mathsf{x}_{n,b}}\{\mathsf{x}_{n,b}|\mathsf{u}_{n,b}=u_{n,b} ; \beta_{b}, \gamma_{n,b} \}, \end{array} $$

((22))

$$\begin{array}{*{20}l} {}F^{\prime}\left(u_{n,b}; \beta_{b},\gamma_{n,b}\right) &= \frac{d}{d u_{n,b}}F\left(u_{n,b}; \beta_{b},\gamma_{n,b}\right). \end{array} $$

((23))

The conditional expectation (22) yields the MMSE estimate of *x*
_{
n,b
} given the decoupled measurement \(u_{n,b}=x_{n,b} +\widetilde {w}_{n,b}\), where \(\widetilde {\mathsf {w}}_{n,b}\sim \mathcal {N}(0,\beta _{b})\); for details, consider [15, 28]. Note that in Algorithm 1 (line 7), (22) is applied separately on the vector components *u*
_{
n,b
} of the vector input **u**
_{
b
}.

Let us calculate these functions for prior (21) (indices *n* and *b* are dropped for clarity):

$$ \begin{aligned} F(u;\beta,\gamma) &= \int_{-\infty}^{\infty} \widetilde{x} f_{\mathsf{x}|\mathsf{u}}(\widetilde{x}|u) d\widetilde{x} \\ &= \frac {\int_{-\infty}^{\infty} \widetilde{x} f_{\mathsf{u}|\mathsf{x}}(u|\widetilde{x})f_{\mathsf{x}}(\widetilde{x}) d\widetilde{x}} {\int_{-\infty}^{\infty} f_{\mathsf{u}|\mathsf{x}}(u|\widetilde{x})f_{\mathsf{x}}(\widetilde{x}) d\widetilde{x}} \\ &= \frac{\beta\left[h_{1}(u)k_{1}(u)+h_{2}(u)k_{2}(u)\right]}{\frac{\gamma}{1-\gamma}\frac{2{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}{\sqrt{2\pi\beta}} + k_{1}(u) + k_{2}(u)} = \frac{p(u)}{q(u)}, \end{aligned} $$

((24))

with auxiliary functions

$$\begin{array}{*{20}l} g_{1}(u) &= \frac{\sqrt{2\beta}}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}} - \frac{u}{\sqrt{2\beta}}, \end{array} $$

((25))

$$\begin{array}{*{20}l} g_{2}(u) &= \frac{\sqrt{2\beta}}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}} + \frac{u}{\sqrt{2\beta}}, \end{array} $$

((26))

$$\begin{array}{*{20}l} h_{1}(u) &= \frac{u}{\beta}-\frac{2}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}, \end{array} $$

((27))

$$\begin{array}{*{20}l} h_{2}(u) &= \frac{u}{\beta}+\frac{2}{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}, \end{array} $$

((28))

$$\begin{array}{*{20}l} k_{1}(u) &= \text{erfc}\left(g_{1}(u)\right)\exp\left(g_{1}(u)^{2}\right), \end{array} $$

((29))

$$\begin{array}{*{20}l} k_{2}(u) &= \text{erfc}\left(g_{2}(u)\right)\exp\left(g_{2}(u)^{2}\right), \end{array} $$

((30))

the derivative of (24) with respect to *u* calculates as

$$ \begin{aligned} F^{\prime}(u;\beta,\gamma) &= \frac{p^{\prime}(u)q(u)-p(u)q^{\prime}(u)}{q(u)^{2}}, \end{aligned} $$

((31))

where

$$ {{}{\begin{aligned} p^{\prime}(u) &= \ k_{1}(u) + k_{2}(u)\\ &+\! \sqrt{2\beta}\!\left[\! h_{2}(u)\!\left(\!g_{2}(u)k_{2}(u)\,-\,\frac{1}{\sqrt{\pi}}\!\right)\! -\! h_{1}\!(u)\!\left(\!g_{1}\!(u)k_{1}\!(u)\,-\,\frac{1}{\sqrt{\pi}}\!\right)\! \right], \end{aligned}}} $$

((32))

$$ \begin{aligned} q^{\prime}(u) &= \sqrt{\frac{2}{\beta}}\left[g_{2}(u)k_{2}(u)-g_{1}(u)k_{1}(u)\right]. \end{aligned} $$

((33))

Finally, we have to specify the update functions *U*
_{
G
}(·,·,·) and *U*
_{
P
}(·). The *extrinsic group update* (applied entry-wise) in iteration *t* accumulates extrinsic information about signal entry *x*
_{
n,b
} from the entries *x*
_{
n,l
} of the *other* signal vectors, \(l\in \mathcal {B}\backslash b\):

$$ {{}{\begin{aligned} \overline{L}_{n,b}^{t} &= U_{G}(\mathbf{U}^{t-1},\boldsymbol{\beta}^{t-1},\gamma_{n,b}^{0}) := \overline{L}_{n,b}^{0} +\! \sum_{l\in\mathcal{B} \backslash b} L_{n,l}^{t} \\ &=\log\frac{\gamma_{n,b}^{0}}{1-\gamma_{n,b}^{0}} + \! \sum_{l\in\mathcal{B}\backslash b}\!\log \frac{2{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}{\sqrt{2\pi\beta_{l}^{t-1}}} \!- \log\!\left[\!k_{1}(u_{n,l}^{t-1})\,+\,k_{2}(u_{n,l}^{t-1})\right],\\ &\quad \forall n \in \{1,...,N\},\forall b \in \mathcal{B}=\{1,...,N_{B}\}. \end{aligned}}} $$

((34))

The *prior update* converts likelihood ratios into probabilities:

$$ {\begin{aligned} \gamma_{n,b}^{t} = U_{P}(\overline{L}_{n,b}^{t}) := \frac{1}{1+\exp\left(-\overline{L}_{n,b}^{t}\right)},\\ &&&\forall n \in \{1,...,N\}, \forall b \in \mathcal{B}=\{1,...,N_{B}\}. \end{aligned}} $$

((35))

A detailed explanation of functions (34) and (35) can be found in [15].

### 5.4 Specification of functions—Gaussian relaxation

Note that the implementation of the functions above may be computationally challenging—in particular, the terms *k*
_{1}(*u*) and *k*
_{2}(*u*) that occur in (24), (31), and (34) entail a complementary error function that is multiplied with an exponential function. This may cause numerical instabilities in the computation. In order to keep the demands on the reader hardware low and facilitate a simpler implementation, we propose to approximate the channel PDF (20) by a Gaussian distribution with zero mean and variance \(\sigma _{\mathsf {x}}^{2}=\frac {1}{2}{\sigma ^{(\text {f})}}^{2}{\sigma ^{(\text {b})}}^{2}\), i.e., with the same variance as the Laplace distribution 20. Doing so, we obtain the following functions for BASSAMP, see [15] (indices *n* and *b* are dropped for clarity):

$$\begin{array}{*{20}l} F(u; \beta, \gamma) &= u \cdot M(u, \gamma, \xi), \end{array} $$

((36))

$$\begin{array}{*{20}l} F^{\prime}(u; \beta, \gamma) &= M(u, \gamma, \xi) + \frac{1}{\beta}m(u, \gamma, \xi) \cdot F(u_n;\beta)^{2}, \end{array} $$

((37))

with auxiliary functions

$$\begin{array}{*{20}l} \xi&=\frac{\sigma_{\mathsf{x}}^{2}}{\beta} = \frac{{\sigma^{(\mathrm{f})}}{\sigma^{(\mathrm{b})}}}{2\beta}, \end{array} $$

((38))

$$\begin{array}{*{20}l} m(u, \gamma, \xi) &= \frac{\gamma}{1-\gamma}\sqrt{1+\xi} \exp\left(-\frac{u^{2}}{2\beta}\frac{\xi}{1+\xi} \right), \end{array} $$

((39))

$$\begin{array}{*{20}l} M(u, \gamma, \xi) &= \frac{\xi}{1+\xi} \frac{1}{1+m(u, \gamma, \xi)}. \end{array} $$

((40))

The *extrinsic group update* for the Gaussian prior reads

$$ {\begin{aligned} \overline{L}_{n,b}^{t} &= U_{G}(\mathbf{U}^{t-1},\boldsymbol{\beta}^{t-1},\gamma_{n,b}^{0}) := \overline{L}_{n,b}^{0} + \sum\limits_{l\in\mathcal{B} \backslash b} L_{n,l}^{t} \\ &= \log\frac{\gamma_{n,b}^{0}}{1\,-\,\gamma_{n,b}^{0}} + \frac{1}{2} \!\! \sum\limits_{l\in\mathcal{B} \backslash b} \!\! \left(\log \frac{\beta_{l}^{t-1}+\sigma_{\mathsf{x}_{n,l}}^{2}}{\beta_{l}^{t-1}} - \frac{\left(u_{n,l}^{t-1}\right)^{2} \sigma_{\mathsf{x}_{n,l}}^{2}}{\beta_{l}^{t-1}\left(\beta_{l}^{t-1}+\sigma_{\mathsf{x}_{n,l}}^{2}\right)} \right),\\ &\ \ \ \ \forall n \in \{1,...,N\}, \forall b \in \mathcal{B}=\{1,...,N_{B}\}. \end{aligned}} $$

((41))

The *prior* update (35) stays the same.

To justify this approximation of the channel PDF, we conducted numerical experiments that suggest that the MSE performance is hardly affected, see Section 7.

### 5.5 Choice of parameters

The choice of the channel model and the forward channel variance *σ*
^{(f)}
^{2} and backward channel variance *σ*
^{(b)}
^{2} depends on the location of the reader antennas, the environment (scatterers and reflectors), and the effective read range. The variances describe the strength of the spatial fading of the forward and backward link, respectively. In order to estimate them, one would have to measure the forward and backward links separately for many prospective tag positions.

In practice, one would rather measure the total channel (13), or avoid measuring the channels and determining their distribution entirely. The AMP framework allows to perform prior estimation during recovery, i.e., the recovery algorithm can be adapted to estimate the prior over iterations. One such algorithmic extension was proposed in [30], and it was shown that the performance degradation due to unknown prior is negligible in practice.