--- a +++ b/inst/tkrgdatasmddwrap.m @@ -0,0 +1,37 @@ +%%cve|stdevdif = tkrgdatasmddwrap (log10lambda, x, y, d, 'cve'|'stdev'[, stdev]) +%% +%% Wrapper function for tkrgdatasmdd in order to minimize over lambda +%% w.r.t. cross-validation error OR the squared difference between the +%% standard deviation of data from the smooth data and the given +%% standard deviation. +%% + +%% Copyright (C) 2008 Jonathan Stickel +%% This program is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation; either version 2 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 General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; If not, see <http://www.gnu.org/licenses/>. + + +function out = tkrgdatasmddwrap (log10lambda, x, y, d, mintype, stdev) + + lambda = 10^(log10lambda); + + if ( strcmp(mintype,"stdev") ) + ys = tkrgdatasmdd(x, y, lambda, d); + stdevd = std(y-ys); + out = (stdevd - stdev)^2; + else + [ys, cve] = tkrgdatasmdd(x, y, lambda, d); + out = cve; + endif + +endfunction