From 0ec3f2b251823ed068bac2d455d151c9e54f0e6a Mon Sep 17 00:00:00 2001 From: Jakob Asslaender Date: Tue, 2 Jan 2024 18:45:52 -0500 Subject: [PATCH] docstring beautifying --- src/SplitBregman.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SplitBregman.jl b/src/SplitBregman.jl index 86faba81..f665e240 100644 --- a/src/SplitBregman.jl +++ b/src/SplitBregman.jl @@ -65,7 +65,7 @@ Creates a `SplitBregman` object for the forward operator `A` or normal operator * `tolInner::Real` - relative tolerance for CG stopping criterion * `verbose::Bool` - print residual in each iteration -This algorithm solves the constraint problem (Eq. (4.7) in [Tom Goldstein and Stanley Osher](https://doi.org/10.1137/080725891)), i.e. ||R(x)||_1 such that ||Ax -b||_2^2 < σ^2. In order to solve the unconstraint problem (Eq. (4.8) in [Tom Goldstein and Stanley Osher](https://doi.org/10.1137/080725891)), i.e. ||Ax -b||_2^2 + λ ||R(x)||_1, you can either set `iterationsOuter=1` or use ADMM instead, which is equivalent (`iterationsOuter=1` in SplitBregman in implied in ADMM and the SplitBregman variable `iterationsInner` is simply called `iterations` in ADMM) +This algorithm solves the constraint problem (Eq. (4.7) in [Tom Goldstein and Stanley Osher](https://doi.org/10.1137/080725891)), i.e. `||R(x)||₁` such that `||Ax -b||₂² < σ²`. In order to solve the unconstraint problem (Eq. (4.8) in [Tom Goldstein and Stanley Osher](https://doi.org/10.1137/080725891)), i.e. `||Ax -b||₂² + λ ||R(x)||₁`, you can either set `iterationsOuter=1` or use ADMM instead, which is equivalent (`iterationsOuter=1` in SplitBregman in implied in ADMM and the SplitBregman variable `iterationsInner` is simply called `iterations` in ADMM) Like ADMM, SplitBregman differs from ISTA-type algorithms in the sense that the proximal operation is applied separately from the transformation to the space in which the penalty is applied. This is reflected by the interface which has `reg` and `regTrafo` as separate arguments. E.g., for a TV penalty, you should NOT set `reg=TVRegularization`, but instead use `reg=L1Regularization(λ), regTrafo=RegularizedLeastSquares.GradientOp(Float64; shape=(Nx,Ny,Nz))`.