Clear Filters
Clear Filters

Get derivatives from noisy data

22 views (last 30 days)
Zhenhui
Zhenhui on 3 Jun 2011
Commented: shamraiz shamraiz on 24 Apr 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

Accepted Answer

Matt Fig
Matt Fig on 3 Jun 2011
Numerical differentiation with noisy data is notoriously unreliable. Have a look at this article to see one method for addressing the issue.
  5 Comments
Tobias
Tobias on 21 Jun 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

Sign in to comment.

More Answers (1)

Rory Staunton
Rory Staunton on 30 Jun 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!