diff options
author | Daniil Kazantsev <dkazanc@hotmail.com> | 2018-01-24 17:39:38 +0000 |
---|---|---|
committer | Edoardo Pasca <edo.paskino@gmail.com> | 2018-01-25 11:21:12 +0000 |
commit | 723a2d3fbe9a7a8c145b5f5ef481dcd4a3799383 (patch) | |
tree | b4351067e39021973b7f155a04cd967289ac9ddc /Wrappers/Matlab/studentst.m | |
parent | 9ff389298a1dc4d94222cfcc6e9c6c945401af03 (diff) | |
download | regularization-723a2d3fbe9a7a8c145b5f5ef481dcd4a3799383.tar.gz regularization-723a2d3fbe9a7a8c145b5f5ef481dcd4a3799383.tar.bz2 regularization-723a2d3fbe9a7a8c145b5f5ef481dcd4a3799383.tar.xz regularization-723a2d3fbe9a7a8c145b5f5ef481dcd4a3799383.zip |
all Matlab related stuff have been moved to wrappers
Diffstat (limited to 'Wrappers/Matlab/studentst.m')
-rw-r--r-- | Wrappers/Matlab/studentst.m | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/Wrappers/Matlab/studentst.m b/Wrappers/Matlab/studentst.m deleted file mode 100644 index 99fed1e..0000000 --- a/Wrappers/Matlab/studentst.m +++ /dev/null @@ -1,47 +0,0 @@ -function [f,g,h,s,k] = studentst(r,k,s) -% Students T penalty with 'auto-tuning' -% -% use: -% [f,g,h,{k,{s}}] = studentst(r) - automatically fits s and k -% [f,g,h,{k,{s}}] = studentst(r,k) - automatically fits s -% [f,g,h,{k,{s}}] = studentst(r,k,s) - use given s and k -% -% input: -% r - residual as column vector -% s - scale (optional) -% k - degrees of freedom (optional) -% -% output: -% f - misfit (scalar) -% g - gradient (column vector) -% h - positive approximation of the Hessian (column vector, Hessian is a diagonal matrix) -% s,k - scale and degrees of freedom -% -% Tristan van Leeuwen, 2012. -% tleeuwen@eos.ubc.ca - -% fit both s and k -if nargin == 1 - opts = optimset('maxFunEvals',1e2); - tmp = fminsearch(@(x)st(r,x(1),x(2)),[1;2],opts); - s = tmp(1); - k = tmp(2); -end - - -if nargin == 2 - opts = optimset('maxFunEvals',1e2); - tmp = fminsearch(@(x)st(r,x,k),[1],opts); - s = tmp(1); -end - -% evaulate penalty -[f,g,h] = st(r,s,k); - - -function [f,g,h] = st(r,s,k) -n = length(r); -c = -n*(gammaln((k+1)/2) - gammaln(k/2) - .5*log(pi*s*k)); -f = c + .5*(k+1)*sum(log(1 + conj(r).*r/(s*k))); -g = (k+1)*r./(s*k + conj(r).*r); -h = (k+1)./(s*k + conj(r).*r); |