Here is my MATLAB code for Tikhonov regularization with non-negativity constraint, the data processing routine used in this paper. The relationship between y(t) and N_T(f) is
y(t) = \int_0^\infty N_T(f) f \exp(-ft) df
where y(t) is the input data (e.g., experimental data), and N_T(f) is the spectrum to be calculated in f-domain.
The regularization parameter can be either provided externally, or determined heuristically by L-curve criterion or Morozov discrepancy principle. Three different discretization schemes, i.e., linear, log, and Gauss-Laguerre, are available.
Files:
-
tikregnc.m: function that solves for solutions to Tikhonov regularization with non-negativity constraint
-
test_tiknc.m: the test script for tikregnc.m
-
ncsolve.m: linear non-negativty constrained problem solver; a linear programming solver is used
-
get_A: get discretized matrix A; linear, log, Gaussian-Laguerre quadrature discretization are available
-
t_func: generates time-domain test data from a Gaussian spectrum in f-space
-
gen_laguerre_rule2.m: modified Gauss-Laguerre quadrature discretizer based on here
-
regutools: a copy of P.C. Hansen's Regularization toolbox from here; this directory should be added to MATLAB path
Other dependencies: