tvr_derivative Function

public function tvr_derivative(dt, x, alpha, maxiter, tol, niter) result(rst)

Computes an estimate to the derivative of an evenly-sampled data set using total variation regularization.

See Also

  • van Breugel, Floris & Brunton, Bingni & Kutz, J.. (2020). Numerical differentiation of noisy data: A unifying multi-objective optimization framework.

  • Oliver K. Ernst, Ph. D. (2021, February 16). How to differentiate noisy signals. Medium. https://oliver-k-ernst.medium.com/how-to-differentiate-noisy-signals-2baf71b8bb65

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: dt

The time step between data points.

real(kind=real64), intent(in), dimension(:) :: x

An N-element array containing the data whose derivative is to be estimated.

real(kind=real64), intent(in) :: alpha

The regularization parameter.

integer(kind=int32), intent(in), optional :: maxiter

The maximum number of iterations to allow. The default is 20 iterations.

real(kind=real64), intent(in), optional :: tol

The convergence tolerance to use. The tolerance is applied to the difference in Euclidean norms of the derivative update vector. Once the norm of the update vector is changing less than this tolerance, the iteration process will terminate. The default is 1e-3.

integer(kind=int32), intent(out), optional :: niter

The number of iterations actually performed.

Return Value real(kind=real64), allocatable, dimension(:)

An N-element array containing the estimate of the derivative.