Total Variation Regularized Numerical Differentiation (TVDiff)
This Matlab code implements the
methods found in Rick Chartrand, "Numerical differentiation of noisy,
nonsmooth data," ISRN Applied Mathematics, Vol. 2011, Article
ID 164564, 2011. This paper can be found in my Publications page. Please cite this paper if you use the code in published work.
The code was written and tested in Matlab version R2010a. Known issues:
- In versions before R2009b, the tilde output
argument is not supported. In the 'else' branch of the
'if diagflag' (one for each of the small and large
cases), the pcg command can have the tilde output
argument replaced with a dummy variable name. (Having
an argument suppresses the printing of pcg
diagnostics.)
- The 'large' case is missing a factor of dx in the
definition of both A and AT. I am not changing it for
now, so that the demo results will more closely match
those of the paper. In any event, using a value of dx
that is larger than that dictated by your problem can
make things better conditioned, so it's best to simply
rescale the results.
Please send bug reports to rickc@lanl.gov.
Download
Download TVDiff.tar or TVDiff.zip