https://hal.archives-ouvertes.fr/hal-02955901
Raw File
Tip revision: 9d1304a95456ed7b1ce59613fc810f5463b35273 authored by Software Heritage on 02 October 2020, 00:00:00 UTC
hal: Deposit 1023 in collection hal
Tip revision: 9d1304a
proxL2distind.m
%% proxL2distind
% Computes proximity operator for the indicator function of the L2 distance
% x = argmin||x-v||^2 s.t. ||Mx - y||<=lambda
%
% Note: if M is a tight frame, the output is exact, otherwise it is an
% estimate for the evaluation of the proximity operator
%
%     Copyright (C) Srdan Kitic, Inria Rennes
% 
%     This program is free software: you can redistribute it and/or modify
%     it under the terms of the GNU Affero General Public License as
%     published by the Free Software Foundation, either version 3 of the
%     License, or (at your option) any later version.
% 
%     This program is distributed in the hope that it will be useful,
%     but WITHOUT ANY WARRANTY; without even the implied warranty of
%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%     GNU Affero General Public License for more details.
% 
%     You should have received a copy of the GNU Affero General Public License
%     along with this program.  If not, see <http://www.gnu.org/licenses/>.
% 
% Contact: nancy.bertin@irisa.fr or remi.gribonval@inria.fr
% PANAMA Research Group,  IRISA  -  (Inria & CNRS)
% Campus de Beaulieu, 35042 Rennes cedex, France
%
%%
function x = proxL2distind (v, M, y, lambda)

d = M*v - y;
norm_Mv = norm(d);

if norm_Mv > lambda
    Mt = M';
    MMt = M*Mt;
    x = v - ((norm_Mv - lambda)/norm_Mv) .* Mt*(MMt\d);
else
    x = v;
end

end
back to top