shrinkFuncs

Defines extended soft-shrinkage functions (for real and imaginary part).

Contents

Syntax

seti = shrinkFuncs(seti)

Description

seti = shrinkFuncs(seti) defines extended soft-shrinkage functions for real and imaginary part in seti.shrkRe(x,alpha) and seti.shrkIm(x,alpha).

Example

Example 1 (without physical bounds, i.e. soft-shrinkage)

seti.qNorm = 1;
seti.physBounds = [-inf, inf, -inf, +inf];
seti = shrinkFuncs(seti);
alpha = 0.5;
t = -4:0.1:4;
figure(101);
plot(t,seti.shrkRe(t,alpha));

Example 2 (with physical bounds, i.e. extended soft-shrinkage)

seti.qNorm = 1;
seti.physBounds = [-1, 3, 0, 3];
seti = shrinkFuncs(seti);
alpha = 0.5;
t = -2:0.1:4;
figure(102);
plot(t,seti.shrkRe(t,alpha));

Input Arguments

Output Arguments

More About

Soft-shrinkage and extended soft-shrinkage operator

The soft-shrinkage operator, see [1], is defined for real-valued $x$ and $a \geq 0$ by

Note that $\texttt{alpha}$ instead of $\kappa$ is used in the code below.

The interval projection operator, see Section 4.7 in [2], is defined for real-valued $x$ and $a\geq b$ by

The extended soft-shrinkage, see Section 4.7 in [2], defined as

$\mathcal{I}_{[a,b]}(\mathcal{S}(x,\kappa))$.

Some further notes

References

Code

function seti = shrinkFuncs(seti)
% defines extended soft-shrinkage functions (for real and imaginary part)

reMin = seti.physBounds(1);
reMax = seti.physBounds(2);
imMin = seti.physBounds(3);
imMax = seti.physBounds(4);

if seti.qNorm == 1
    % shrinkage func for real part
    seti.shrkRe = @(x,alpha) max(min(max((abs(x)-alpha),0).*sign(x), reMax), reMin);
    % shrinkage func for imag part
    seti.shrkIm = @(x,alpha) max(min(max((abs(x)-alpha),0).*sign(x), imMax), imMin);
else % shrinkFuncComp is not available in public code
    seti.shrkRe = @(x,alpha) max(min( shrinkFuncComp(x,alpha,seti.qNorm, 'newton'), reMax), reMin);
    seti.shrkIm = @(x,alpha) max(min( shrinkFuncComp(x,alpha,seti.qNorm, 'newton'), imMax), imMin);
end

end