SOLVE_BPDN - Solve BPDN (basis pursuit denoising) problem
Usage
sol = solve_bpdn(y, epsilon, A, At, Psi, Psit, param)
sol = solve_bpdn(y, epsilon, A, At, Psi, Psit)
[sol, info] = solve_bpdn(...)
Output parameters
sol |
Solution |
info |
Structure summarizing informations at convergence |
Description
sol = solve_BPDN(y, A, At, Psi, Psit, param) solves:
\begin{equation*}
arg \min_x \| \Psi x\|_1 s.t. \|y-A x\|_2 < \epsilon
\end{equation*}
Y contains the measurements. A is the forward measurement operator and
At the associated adjoint operator. Psit is a sparfying transform and Psi
its adjoint. PARAM a Matlab structure containing the following fields:
General parameters:
param.verbose : 0 no log, 1 print main steps, 2 print all steps.
param.maxit : max. nb. of iterations (default: 200).
param.tol : is stop criterion for the loop. The algorithm stops if
\begin{equation*}
\frac{ n(t) - n(t-1) }{ n(t)} < tol,
\end{equation*}
where \(n(t) = ||\Psi(x)||\) is the objective function at iteration t
by default, tol=10e-4.
param.gamma : control the converge speed (default: 1).
Projection onto the L2-ball :
param.tight_b2 : 1 if A is a tight frame or 0 if not (default = 1)
nu_b2 : bound on the norm of the operator A, i.e.
\begin{equation*}
\|A x\|^2 \leq \nu \|x\|^2
\end{equation*}
tol_b2 : tolerance for the projection onto the L2 ball (default: 1e-3):
\begin{equation*}
\frac{\epsilon}{1-tol} \leq \|y - A z\|_2 \leq \frac{\epsilon}{1+tol}
\end{equation*}
- maxit_b2 : max. nb. of iterations for the projection onto the L2
ball (default 200).
Proximal L1 operator:
tol_l1 : Used as stopping criterion for the proximal L1
operator. Min. relative change of the objective value between two
successive estimates.
maxit_l1 : Used as stopping criterion for the proximal L1
operator. Maximum number of iterations.
param.nu_l1 : bound on the norm^2 of the operator Psi, i.e.
\begin{equation*}
\|\Psi x\|^2 \leq \nu \|x\|^2
\end{equation*}
param.tight_l1 : 1 if Psit is a tight frame or 0 if not (default = 1)
param.weights : weights (default = 1) for a weighted L1-norm defined
as:
\begin{equation*}
\sum_i w_i |x_i|
\end{equation*}
The problem is solved thanks to a Douglas-Rachford splitting
algorithm.
References:
P. Combettes and J. Pesquet.
A douglas--rachford splitting approach to nonsmooth convex
variational signal recovery.
Selected Topics in Signal Processing, IEEE Journal of,
1(4):564--574, 2007.