Borrar filtros
Borrar filtros

Get derivatives from noisy data

22 visualizaciones (últimos 30 días)
Zhenhui
Zhenhui el 3 de Jun. de 2011
Comentada: shamraiz shamraiz el 24 de Abr. de 2019
Hi everyone, here i had a problem when i want to get derivatives from a surface.
For my data, first i use sft to get a fitting model (cubic interpolant was used when data have no noise) and then use Differentiate(f,x,y) function to get the derivatives. it worked well for the non-noisy data. but when i add noise, i have to use other method to smooth and fit the data, i used Lowess. it gave me a good fitting. but when i use differentiate(f,x,y) to get derivatives, the results are terrible. there are many big peaks and valleies even when they should be very smooth. I tried to decrease the noise level. But for noise higher than 2%, I still cannot get good results.
I wonder is there any other method to smooth noisy data and recover the real data and their derivatives. And I think how much smoothing yield accurate derivative is difficult to know. Any suggestion? Your answer will be greatly appreciated.
Cheers Hui

Respuesta aceptada

Matt Fig
Matt Fig el 3 de Jun. de 2011
Numerical differentiation with noisy data is notoriously unreliable. Have a look at this article to see one method for addressing the issue.
  5 comentarios
Tobias
Tobias el 21 de Jun. de 2018
Hi,
Here is some code available to perform total variation:
https://github.com/JeffreyEarly/GLNumericalModelingKit/blob/master/Matlab/TVRegDiff.m https://sites.google.com/site/dnartrahckcir/home/tvdiff-code
Link to the article, Best, Toby

Iniciar sesión para comentar.

Más respuestas (1)

Rory Staunton
Rory Staunton el 30 de Jun. de 2011
I am working on a similar problem, but only on univariate data, and I am still exploring different approaches. One that has worked for me reasonably well is essentially what could be called 'automatic piecewise linear fitting by threshold-limited iterative fit range extension'. Extend the range of your fit until your deviation gets too high, then begin fitting in the adjacent region. There are a number of tricks that can be used to improve on this, but that's the basic idea. Translating this to surface fitting though could be a much harder problem...

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by