Smooth noise-robust differentiators

Introduction

This page is about numerical differentiation of a noisy data or functions. Its first part briefly summarizes results from the other articles I wrote (see menu on the right) covering standard approaches of computing derivative numerically. Text is self-contained, so you don’t have to read all other articles for understanding.

Description begins with analysis of well known central differences establishing reasons of its bad noise suppression capabilities.

Then I consider differentiators with improved noise suppression derived by classical method of least-squares smoothing. Such filters are known as low-noise Lanczos differentiators  or Savitzky-Golay filters. I briefly sketch its properties and main drawback – “wavy” always-non-zero response on noisy high frequencies.

Finally I propose my original filters for numerical differentiation with guaranteed noise suppression and very efficient computational structure (coefficients are fractions with the denominators of power of 2). You can skip directly to the table of final formulas.

Prior methods

Classical approach of computing derivative numerically relies on approximation of f(x) near target point x^* by some polynomial P(x). If neighborhood of x^* is chosen properly then P(x) approximates f(x) well on it and we can assume that f’(x^*)\approx P’(x^*).

Particular methods can be derived by using different approximation technique of f(x) by P(x) in this general framework.

Central differences are obtained by interpolation of f(x) by P(x). Since interpolation lacks for high-frequencies suppression they work well only for noiseless functions whose values can be computed precisely. In the case of noisy functions/data central differences give inadequate results.

Red dashed line is the response of an ideal differentiator H_d(\omega) = i\omega. More detailed analysis on their properties can be found on central differences page.

To resolve this issue Lanczos differentiators (Savitzky-Golay filters) use smoothing least-squares approximation of f(x) by P(x) to remove noise from the data. As a result such method is much more robust to noise. However due to least-squares nature Lanczos differentiators cannot guarantee complete noise suppression in high frequencies. Its magnitude response doesn’t go smoothly to zero near \pi. Instead they resemble “wavy” always-non-zero response on high frequencies.

Although amplitude of waves is decreasing for longer filters in order to achieve acceptable suppression one should choose very long filters. See Low-noise Lanczos differentiators page for more details.

From signal processing point of view differentiators are anti-symmetric digital filters with finite impulse response of Type III. There are powerful methods for its construction: based on windowed Fourier series, frequency sampling, etc. Parks-McClellan algorithm is one of the best among others. The main idea behind them is to construct filter from the required magnitude response. Although such algorithms are capable to generate near-optimal solution they spread error (deviance from the target magnitude response) uniformly in passband (low frequencies) and stopband (high frequencies). On the contrary differentiator needs to be very precise on low frequencies. Moreover filters designed by standard frequency-based methods lack for crucial time-domain characteristic – exactness on polynomials.

Task statement

To summarize, desired numerical derivative computation schema (filter) should posses following properties:

  • Exactness on polynomials.
  • Preciseness on low frequencies.
  • Smooth and guaranteed suppression of high frequencies (to be noise robust).

Additionally it should have computationally favorable structure to be effectively applied in practice. This page is devoted to development of such method (skip to the table of final results).

Derivation

Let’s denote filter length as N (odd), filter’s coefficients as \{c_k\}, function values sampled at N equidistant points around x^* with some step h as:

f_k = f(x_k),\: x_k = x^*+kh,\: k=-M,\dots,M,\, M = \frac{N-1}{2}

Then numerical derivative can be written in general form as

f’(x^*)\approx \frac{1}{h}\sum_{k=1}^{M}{c_k\cdot(f_k-f_{-k})},

As we said before, \{c_k\} is anti-symmetric filter of Type III. Its frequency response is (h=1):

H(\omega)=2i\sum_{k=1}^{M}{c_k\sin(k\omega)}

Our goal is to select coefficients \{c_k\} such that H(\omega) will be as close as possible to the response of an ideal differentiator H_d(\omega)=i\omega in low frequency region and smoothly tend to zero towards highest frequency \omega=\pi.

The most intuitive way of doing this is to force H(\omega) to have high tangency order with H_d(\omega) at \omega=0 as well as high tangency order with \omega axis at \omega=\pi. This leads us to the system of linear equations against \{c_k\}:

<br />
\left\{<br />
\begin{matrix}<br />
\displaystyle \left. \frac{\partial^{i} H(\omega)}{ \partial \omega^{i}} \right|_0 & = & \displaystyle \left. \frac{\partial^{i} H_d(\omega)}{ \partial \omega^{i}} \right|_0 & i = 0,\dots,n\\<br />
&&&\\<br />
\left. \displaystyle \frac{\partial^{j} H(\omega)}{ \partial \omega^{j}} \right|_{\pi} & = & 0 & j = 0,\dots,m<br />
\end{matrix}<br />
\right.<br />

Let’s consider particular example for N=5,\, n=2, and  m=1:

<br />
\left\{<br />
\begin{matrix}<br />
2i\sin(0)\sum_{k=1}^{2}{c_k} & = & 0\\<br />
&&\\<br />
2i\cos(0)\sum_{k=1}^{2}{k\,c_k} & = & i\\<br />
&&\\<br />
-2i\sin(0)\sum_{k=1}^{2}{k^2\,c_k} & = & 0\\<br />
&&\\<br />
2i\sum_{k=1}^{2}{c_k\sin(k\pi)} & = & 0\\<br />
&&\\<br />
2i\sum_{k=1}^{2}{kc_k\cos(k\pi)} & = & 0<br />
\end{matrix}<br />
\right.<br />
\quad<br />
\Rightarrow<br />
\quad<br />
\left\{<br />
\begin{matrix}<br />
0 & = & 0\\<br />
&&\\<br />
2c_1+4c_2 & = & 1\\<br />
&&\\<br />
0 & = & 0\\<br />
&&\\<br />
0 & = & 0\\<br />
&&\\<br />
-2c_1+4c_2 & = & 0<br />
\end{matrix}<br />
\right.<br />

Finally we arrive at the simple solution c_1=\frac{1}{4},\,c_2=\frac{1}{8}. In the same way we can obtain differentiators for any N.

As it can be clearly seen tangency of H(\omega) with response of ideal differentiator at \omega=0 is equivalent to exactness on monomials up to corresponding degree: 1,\,x,\,x^2,\dots,x^n. Thus this condition reformulates exactness on polynomials in terms of frequency domain. So, we don’t need to impose additional requirements to guarantee this valuable property.

Results

Below we present coefficients for the case when n=2 and m are chosen to make quantity of unknowns to be equal to the quantity of equations.


<br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$& Smooth noise-robust differentiators (n=2, exact on $1,\,x,\,x^2$)\\<br />
\hline<br />
&\\<br />
5&$\displaystyle\frac{2(f_{1}-f_{-1})+f_{2}-f_{-2}}{8h}$\\<br />
&\\<br />
7&$\displaystyle\frac{5(f_{1}-f_{-1})+4(f_{2}-f_{-2})+f_{3}-f_{-3}}{32h}$\\<br />
&\\<br />
9&$\displaystyle\frac{14(f_{1}-f_{-1})+14(f_{2}-f_{-2})+6(f_{3}-f_{-3})+f_{4}-f_{-4}}{128h}$\\<br />
&\\<br />
11&$\displaystyle\frac{42(f_{1}-f_{-1})+48(f_{2}-f_{-2})+27(f_{3}-f_{-3})+8(f_{4}-f_{-4})+f_{5}-f_{-5}}{512h}$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />

Differentiator of any filter length N can be written as:

<br />
\displaystyle {f’(x^*)\approx\frac{1}{h}\sum_{k=1}^{M}{c_k\cdot(f_k-f_{-k})}},<br />

where

<br />
\displaystyle {c_k = \frac{1}{2^{2m+1}}\left[{2m\choose m-k+1}-{2m\choose m-k-1}\right]},\quad \displaystyle{m=\frac{N-3}{2}},\quad M=\frac{N-1}{2}<br />

Interestingly that number sequence in numerator (formed by expression in the square brackets) is well known in other areas of mathematics. Please check “On-Line Encyclopedia of Integer Sequences” for more information: A039598, A050166.

Frequency-domain characteristics for the differentiators are drawn below. Red dashed line is the response of ideal differentiator H_d(\omega) = i\omega.

Besides guaranteed noise suppression smooth differentiators have efficient computational structure. Costly floating-point division can be completely avoided. Denominator is a power of 2 and with appropriate selection of h=2^{-p} ( h=1/SamplingRate for digital data) division can be replaced by fast shift operation.

Shift operation doesn’t introduce any rounding error (only exponent is altered, mantissa remains the same) comparing to plain division. As a consequence smooth differentiators are not only computationally efficient but also capable to give more accurate results comparing to other methods (Savitzky-Golay filters, etc.).

Also smooth differentiators can be effectively implemented using fixed point (e.g. for robust edge detection in images).

If we will require tangency of 4th order at \omega=0 with H_d(\omega) (which is equivalent to exactness on polynomials up to 4th degree) following filters are obtained:


<br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$& Smooth noise-robust differentiators (n=4, exact on $1,\,x,\,x^2,\,x^3,\,x^4$)\\<br />
\hline<br />
&\\<br />
7&$\displaystyle\frac{39(f_{1}-f_{-1})+12(f_{2}-f_{-2})-5(f_{3}-f_{-3})}{96h}$\\<br />
&\\<br />
9&$\displaystyle\frac{27(f_{1}-f_{-1})+16(f_{2}-f_{-2})-(f_{3}-f_{-3})-2(f_{4}-f_{-4})}{96h}$\\<br />
&\\<br />
11&$\displaystyle\frac{322(f_{1}-f_{-1})+256(f_{2}-f_{-2})+39(f_{3}-f_{-3})-32(f_{4}-f_{-4})-11(f_{5}-f_{-5})}{1536h}$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />

These filters also show smooth noise suppression with extended passband. As filter length N grows it smoothly zeroing frequencies starting from the highest towards the lowest.

Extensions

There are several obvious extensions of proposed smooth differentiators: second(and higher) order filters, forward(without time lag) filters, 2D smooth differentiators of any order, band-pass differentiators, etc. Here I present only second order smooth differentiators with their properties. I will post other extensions upon request.


<br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$& Second order smooth differentiators (exact on $1,\,x,\,x^2,\,x^3$)\\<br />
\hline<br />
&\\<br />
5&$\displaystyle{\frac {f_{{-2}}-2\,f_{{0}}+f_{{2}}}{4\,{h}^{2}}}$\\<br />
&\\<br />
7&$\displaystyle{\frac {f_{{-3}}+2\,f_{{-2}}-f_{{-1}}-4\,f_{{0}}-f_{{1}}+2\,f_{{2}}+f_{{3}}}{16\,{h}^{2}}}$\\<br />
&\\<br />
9&$\displaystyle{\frac {f_{{-4}}+4\,f_{{-3}}+4\,f_{{-2}}-4\,f_{{-1}}-<br />
10\,f_{{0}}-4\,f_{{1}}+4\,f_{{2}}+4\,f_{{3}}+f_{{4}}}{64\,{h}^{2}}}$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />


<br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$& Second order smooth differentiators (exact on $1,\,x,\,x^2,\,x^3,\,x^4,\,x^5$)\\<br />
\hline<br />
&\\<br />
7&$\displaystyle<br />
{\frac {-f_{{-3}}+5\,f_{{-2}}+f_{{-1}}-10\,f_{{0}}+f_{{1}}+5\,f_<br />
{{2}}-f_{{3}}}{12\,{h}^{2}}}<br />
$\\<br />
&\\<br />
9&$\displaystyle<br />
{\frac {-7\,f_{{-4}}+12\,f_{{-3}}+52\,f_{{-2}}-12\,f<br />
_{{-1}}-90\,f_{{0}}-12\,f_{{1}}+52\,f_{{2}}+12\,f_{{3}}-7\,f_{{4}}}{192\,{h<br />
}^{2}}}<br />
$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />

Disclaimer

You can use materials from this site in any legal activity (research, teaching, engineering, etc.) freely on the basis of respecting my authorship by giving clear statement and reference to my site or particular page on it in your work. Brief description of your project is welcome in the comments below. One point though, if you use my materials in commercial project please consider supporting my site and me by donation.


1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5.00)
Loading ... Loading ...
Print This Page Print This Page

25 Comments

  1. Yoel
    Posted February 4, 2009 at 12:43 am | Permalink

    Hi Pavel.

    Nice work. I’m using it now to compute the velocity of a robot (MBARS) and your methods give very good results.

    I’d like to know if you have the formula of a one-sided version, as using a centered version forces me to introduce a time lag.

    Thanks, Yoel Shapiro.

  2. Posted February 6, 2009 at 3:28 pm | Permalink

    Hi Yoel.

    I am very grateful for your feedback.
    It is very exciting for me to know about real-world applications using my work.

    Noise robust differentiators without time delay (one-sided or forward filters):
    (As always, longer impulse response means better noise suppression.)

    Precise on 1, x:
    1/4 (h[0] = 1, h[-1] = 1, h[-2] = -1, h[-3] = -1)
    1/8 (h[0] = 1, h[-1] = 2, h[-2] = 0, h[-3] = -2, h[-4] = -1)
    1/16 (h[0] = 1, h[-1] = 3, h[-2] = 2, h[-3] = -2, h[-4] = -3, h[-5] = -1)
    1/32 (h[0] = 1, h[-1] = 4, h[-2] = 5, h[-3] = 0, h[-4] = -5, h[-5] = -4, h[-6] = -1)
    1/64 (h[0] = 1, h[-1] = 5, h[-2] = 9, h[-3] = 5, h[-4] = -5, h[-5] = -9, h[-6] = -5, h[-7] = -1)

    Precise on 1, x, x^2:
    h[0] = 5/8, h[-1] = 1/4, h[-2] = -1, h[-3] = -1/4, h[-4] = 3/8
    h[0] = 3/8, h[-1] = 1/2, h[-2] = -1/2, h[-3] = -3/4, h[-4] = 1/8, h[-5] = 1/4
    h[0] = 7/32, h[-1] = 1/2, h[-2] = -1/32, h[-3] = -3/4, h[-4] = -11/32, h[-5] = 1/4, h[-6] = 5/32
    h[0] = 1/8, h[-1] = 13/32, h[-2] = 1/4, h[-3] = -15/32, h[-4] = -5/8, h[-5] = -1/32, h[-6] = 1/4, h[-7] = 3/32

    One-sided filters have several disadvantages comparing to centered versions.
    For example, to achieve the same noise suppression one-sided filter
    should be much longer than centered one. Also they strongly amplify noise
    in the mid-frequency range.

    It would be nice if you would say me which particular centered filter
    works the best for you. Then I can try to design one-sided filter with the similar properties.

    Let me know about the results.
    Also I would gladly make reference on your project – web page, journal paper, etc. if you would provide me such info.

  3. Yoel
    Posted February 9, 2009 at 7:33 pm | Permalink

    Hi Pavel

    Thanks again.

    I experimented with a few filters of yours and found the smooth noise-robust estimator with n=4, N=7 to be satisfactory.

    I’m about to hand in my thesis soon, but haven’t published yet. I can contact you later and you can reference my thesis if that helps.

    you can check this to see what I’m working on:

    http://brml.technion.ac.il/show_project.php?id=14&type=1

    I used your filter to damp the motion of my controller (PHANToM Desktop).

    if you want to stay in contact better address me at my email.

    Cheers, Yoel.

  4. Henry
    Posted May 26, 2009 at 3:29 pm | Permalink

    Hi Pavel:

    This is an excellent work!
    Could you please post 3rd order for both central difference and smooth noise robust (N=5, 7 or 9)?
    I’d like to study the difference (enhancement) between these two.
    How to estimate the error, O(h^n)?
    Thanks

    • Posted May 26, 2009 at 5:12 pm | Permalink

      Hi,
      thanks for the comment.

      Estimation of the error can be done by plug in Taylor series (evaluated at corresponding points kh) instead of {f_k} in the formulas.

      I’ll publish third order formulas shortly.

      I cannot imagine the practical need of 3rd order numerical approximation of the derivative though. Could you please enlighten me – what kind of task are you solving?

  5. Posted May 29, 2009 at 4:17 pm | Permalink

    1. Third order smooth differentiators of O(h^2) approximation error:

    <br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$&Third order smooth differentiators (exact on $x^m,\,m=0,\dots,4$)\\<br />
\hline<br />
&\\<br />
7&$\frac{-3(f_{1}-f_{-1})+f_{3}-f_{-3}}{8h^3}$\\<br />
&\\<br />
9&$\frac{-6(f_{1}-f_{-1})-2(f_{2}-f_{-2})+2(f_{3}-f_{-3})+f_{4}-f_{-4}}{32h^3}$\\<br />
&\\<br />
11&$\frac{-14(f_{1}-f_{-1})-8(f_{2}-f_{-2})+3(f_{3}-f_{-3})+4(f_{4}-f_{-4})+f_{5}-f_{-5}}{128h^3}$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />

    2. Third order smooth differentiators of O(h^4) approximation error:

    <br />
\begin{tabular}{|r|c|}<br />
\hline<br />
$N$&Third order smooth differentiators (exact on $x^m,\,m=0,\dots, 6$)\\<br />
\hline<br />
&\\<br />
9&$\frac{-12(f_{1}-f_{-1})+2(f_{2}-f_{-2})+4(f_{3}-f_{-3})-(f_{4}-f_{-4})}{16h^3}$\\<br />
&\\<br />
11&$\frac{-54(f_{1}-f_{-1})-8(f_{2}-f_{-2})+23(f_{3}-f_{-3})+4(f_{4}-f_{-4})-3(f_{5}-f_{-5})}{128h^3}$\\<br />
&\\<br />
\hline<br />
\end{tabular}<br />

  6. Steve Scigliano
    Posted July 14, 2009 at 2:04 am | Permalink

    Hello Pavel,

    I tried your method on some very noisy surface scan data collected from a coordinate measurement machine and it gave impressive results using the n=4, 11 point filter. However, I believe that I need something more than 11 points to get the results I need. Can you publish the general form of this particular filter or at the very least post the N=19 coefficients?

    Thank you very much.

    • Posted July 14, 2009 at 11:43 am | Permalink

      Hello!
      Thank you for your interest in my results!

      Here is n=4, N=19 filter:

      <br />
\displaystyle{<br />
\frac{1}{393216\,h}<br />
\left[\begin{matrix}<br />
36894\Delta_1+45552\Delta_2+28028\Delta_3+7056\Delta_4\\<br />
-2700\Delta_5-3152\Delta_6-1281\Delta_7-264\Delta_8-23\Delta_9<br />
\end{matrix}\right]<br />
}<br />

      where

      <br />
\Delta_i = f_i-f_{-i}<br />

      Let me know about the test results. I’ll publish filters for other N if you will need them.

      I think for your task (noisy surface data) you need to use 2D smooth differentiators.
      They would perform much better than 1D filters. That is because two dimensional data have noise in diagonal frequencies which cannot be suppressed well by 1D filters by definition.

      Only 2D filters are capable to do that and filter out noise in all directions uniformly (isotropic noise suppression). However it is not easy to build such smooth noise robust filters for 2D and it requires considerable efforts and time.
      If you are targeting commercial applications I would be grateful if you would consider supporting me in this task.

      Thank you!

      • Steve Scigliano
        Posted July 14, 2009 at 11:53 pm | Permalink

        Pavel,

        Thank you for your quick response. In our case ,the surface data was collected by scanning curves on the surface so a 1D filter is working perfectly. We are still in the research stage at this point and have not made a decision as to how to proceed.

        On a slightly different topic, can your work be applied to the data itself?

        Regards,

        Steve

        • Posted July 15, 2009 at 12:21 pm | Permalink

          Yes, these filters can be applied to the raw data itself. One point though – data should be uniformly spaced.

          How do you apply them now? Do you process data somehow beforehand? Smoothing? Curve fitting (you would not need numerical derivative in this case)?

          I have some (rather little) experience in processing of data from a coordinate measurement machine and IMHO following workflow is preferable:

          Smoothing filters with guaranteed noise suppression (similar to the described derivative filters) can be applied on the first stage of data processing pipeline to prepare data for all range of other operations – finding surface characteristics (first and second derivatives to estimate curvature, normal vectors, etc.), fitting smooth analytical surface representation (by splines) or else.

          In this method you remove noise from data once and forever, using standard algorithms for further operations without worrying about noise anymore.

          Does it have sense?

  7. Astrid
    Posted July 24, 2009 at 11:17 pm | Permalink

    Hi Pavel,

    Now I’m using n=2 and N=5 in the 1D form of your smooth noise-robus, which already gives impressive results for edge detection on medical images. I would be interested to use your smooth noise-robust differentiator in the 2D form, to improve the analysis. Could you be so kind to post this?

    Regards,
    Astrid

    • Posted July 27, 2009 at 11:03 am | Permalink

      Hi, thanks for the interest in my work.

      I didn’t finish research on 2D filters yet. Please use 1D filters for the moment. They estimate gradient components in 2D well.

      I’ll get in touch once I will be ready to share essential 2D filters for edge detection.

      Cheers!

      • Posted July 27, 2009 at 6:42 pm | Permalink

        I’ve published 2D noise robust derivative filters here: Edge Detection.

        First is similar to n=2, N=5 but has isotropic noise suppression. Second is more noise robust, corresponds to n=2, N=7.

        Give it a try and let me know about the results please.

  8. Bernard McGarvey
    Posted August 5, 2009 at 8:26 pm | Permalink

    Pavel – I am looking at some data where there is noise but where looking at the derivative profile is very informative and so I am interested in your approach. Two questions:
    1. have you published any papers on this and if so can you give me the references?
    2. My data starts off with h=1 then chnages to h=5 and then for the last portion h=15. Any suggestions as to how I could handle the changes to h when i us eyour formulas?

    Thanks

    • Posted August 5, 2009 at 9:02 pm | Permalink

      I have not published paper yet, although I plan to do so. You can ask me any questions by commenting or by e-mail if something unclear in the above article. Also you can reference this webpage in your paper.

      In case of step change simple linear interpolation could be used to derive missing uniformly spaced data on the boundary. Then it could be plugged into differentiator. I’m sure it will give satisfactory results.

      • Bernard McGarvey
        Posted August 6, 2009 at 1:05 am | Permalink

        Thanks for the quick reply. What I did was to divide each component of the calculation say

        [y(i+k) - y(i-k)] by [x(i+k) - x(i-k)]/k

        so that in effect each y contribution is divided by the x distance between the values of the contribution.

        With this approach the transition from one h value to the enxt h value was far less obvious.

        Any comments?

        • Posted August 6, 2009 at 10:58 pm | Permalink

          I think your idea is very good. Actually your idea is exactly what I needed to extend my differentiators on irregular spaced data!

          One note though, it is better to divide [y(i+k) - y(i-k)] by [x(i+k) - x(i-k)]/(2*k).

          In this case formulas will give precise derivative estimation for any data spacing. Also formulas will coincide with referenced above for uniform data.

          To sum up, general form of a differentiator for irregular spaced data is:

          <br />
\displaystyle {f’(x^*)\approx \sum_{k=1}^{M}{c_k\cdot\frac{f_{k}-f_{-k}}{ x_{k}-x_{-k}}\cdot 2k}}<br />

          with the same \{c_k\} as explained in the article above.

          Thank you very much!

          • Bernard McGarvey
            Posted August 8, 2009 at 9:17 pm | Permalink

            You are correct – I had used 2*k but had mis-typed.
            Thanks

  9. Michael Kremliovsky
    Posted August 20, 2009 at 4:47 pm | Permalink

    Pavel,

    thank you very much for posting this project online, very useful indeed. I have been using Savitsky-Golay differentiators for ages, but faced recently a new class of problems requiring more serious attention to the details. In particular, I need minimal delays even at the expense of quality, because the results are used for real-time control system. The quality of the smoothing can be compensated for later in time, but the delay limits the response efficiency in principal. In addition to differentiators I need to smooth signal itself as well. I am curious if you experimented and/or can I suggest one-sided smoothers with N around, say 10-15. I will be more than happy to tell you about the application where these smoothers play a very important role in saving lives.

    Best regards,
    Michael (Михаил)

  10. Atul
    Posted August 31, 2009 at 3:05 pm | Permalink

    Are there two dimensional versions of the smooth noise robust differentiators?

  11. Atul
    Posted September 1, 2009 at 12:20 pm | Permalink

    Thank you very much, Pavel – hugely appreciated. This is precisely what I was looking for!

  12. Posted November 14, 2009 at 5:53 am | Permalink

    Looks like great work. I am interested in implementing a general form of this differentiating filter in Matlab function (since I couldn’t find one you had already made) and believe that you missed a k in the last equation you give in the example for the N=5, n=2 and m=1 case. Is that correct and do you mind if I continue working on the Matlab function?

    Thanks,
    Nate

    • Posted November 14, 2009 at 7:42 pm | Permalink

      Yes, you are right, I missed k. I’ve fixed it. Thank you!

      As far as I know these filters are not implemented as Matlab function yet. So, I think many people would be very grateful if you would do this and share source code. I will give link to your web page with the files or I can make them available for download through this page if you want.

      Thank you for your interest and efforts!

      • Posted November 15, 2009 at 12:36 am | Permalink

        Pavel,
        Thanks that would be nice. I currently have a code that is working but for n values other than n=2 where I didn’t know a closed form solution I begin to run into numerical issues for large n values because I do not know how to directly implement the shift operation in Matlab. Therefore, if you could post or email me a code so I can see how you approach these problems I would appreciate it.

        Thanks,
        Nate

Post a Comment

Your email is never published nor shared.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting