# Module bpdn¶

This module includes the following classes:

• admm.bpdn.BPDN

Solve the BPDN problem

(1)$\mathrm{argmin}_\mathbf{x} \; (1/2) \| D \mathbf{x} - \mathbf{s} \|_2^2 + \lambda \| \mathbf{x} \|_1$
• BPDNJoint

Solve the BPDN problem with an additional $$\ell_{2,1}$$ norm term to promote joint sparsity

$\mathrm{argmin}_X \; (1/2) \| D X - S \|_2^2 + \lambda \| X \|_1 + \mu \| X \|_{2,1}$
• ElasticNet

Solve the Elastic Net problem

$\mathrm{argmin}_\mathbf{x} \; (1/2) \| D \mathbf{x} - \mathbf{s} \|_2^2 + \lambda \| \mathbf{x} \|_1 + (\mu/2) \| \mathbf{x} \|_2^2$
• BPDNProjL1

Solve the problem with $$\ell_2$$ objective and an $$\ell_1$$ constraint

(2)$\mathrm{argmin}_\mathbf{x} \; (1/2) \| D \mathbf{x} - \mathbf{s} \|_2^2 \; \text{such that} \; \| \mathbf{x} \|_1 \leq \gamma$
• MinL1InL2Ball

Solve the problem with $$\ell_1$$ objective and an $$\ell_2$$ constraint

(3)$\mathrm{argmin}_\mathbf{x} \| \mathbf{x} \|_1 \; \text{such that} \; \| D \mathbf{x} - \mathbf{s} \|_2 \leq \epsilon$

Usage examples are available.

## A Note on Problem Naming¶

Unfortunately there is no consistent use of names for problems (1), (2), and (3) in the literature. Problem (1) is referred to here as Basis Pursuit DeNoising (BPDN) since this is the form of the problem to which this name was first applied [11], but one can also find problem (3) referred to as BPDN, and problem (1) referred to as the lasso, which is the name that was originally applied to problem (2) [32].