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

 채택된 답변

Matt Fig
Matt Fig 2011년 6월 3일

0 개 추천

Numerical differentiation with noisy data is notoriously unreliable. Have a look at this article to see one method for addressing the issue.

댓글 수: 5

Zhenhui
Zhenhui 2011년 6월 3일
Thanks for your quick answer, i will first read the article you provided. hope i cant find the way ^^
Zhenhui
Zhenhui 2011년 6월 3일
Hi Matt, I read the paper and it helps a lot. From the paper, regularization is needed before denosing.It seems to be a complicated process. i wonder how can we do that in matlab or should I write a code for that.sorry that i just learn to use matlab, your advice will help a lot~
Cheers
Isabel Llorente Garcia
Isabel Llorente Garcia 2018년 4월 20일
I am afraid the link seems to be broken. Can somebody provide another link? Many thanks.
Tobias
Tobias 2018년 6월 21일
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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Rory Staunton
Rory Staunton 2011년 6월 30일

0 개 추천

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...

카테고리

도움말 센터File Exchange에서 Get Started with Curve Fitting Toolbox에 대해 자세히 알아보기

질문:

2011년 6월 3일

댓글:

2019년 4월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by