-
Notifications
You must be signed in to change notification settings - Fork 0
/
twod_errlambda1.m
56 lines (51 loc) · 1.51 KB
/
twod_errlambda1.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function [err] = two_errlambda1(lambda,sigma,gnoise,psi,rk,eta,e,dd)
%% Error function for fminbnd optimization -- continuous rhs
% The purpose of this function is to evaluate
% || Ax - g || + lambda || x || - delta
%
% [err] = twoerrlambda1(lambda,sigma,gnoise,phi,rk,eta,e,dd)
%
% INPUT:
%
% lambda ............. double
% regularization parameter to be optimized
%
% sigma .............. vector
% singular values
%
% gnoise ............. chebfun
% noisy right-hand side
%
% psi ................ vector of chebfun
% left singular functions
%
% rk ................. integer
% rank, include the first rk singular values/vectors
%
% eta ................ double
% additional factor in the discrepancy principle,
% choose between 1 and 5
%
% e .................. double
% estimation of the norm of the noise contained in gnoise
%
% dd ................. vector
% inner product of gnoise with the right singular functions phi
%
% OUTPUT:
%
% err ................ double
% value of the cost function
%
beta = dd.*sigma./(sigma.^2+lambda^2);
kex = beta(1)*sigma(1)*psi{1};
for ll = 2:rk
kex = kex + beta(ll)*sigma(ll)*psi{ll};
end
err = abs(norm(kex - gnoise)^2-eta^2*e^2);
%%% Local Variables:
%%% mode:matlab
%%% flyspell-mode:nil
%%% mode:flyspell-prog
%%% ispell-local-dictionary: "american"
%%% End: