1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Moving average

  1. Aug 13, 2009 #1
    hello,
    i'm trying to implement the moving average algorithm
    http://en.wikipedia.org/wiki/Moving_average

    i don't understand, after i calculate an average of say 5 values, what do i do
    with the x values? how do i plot the new data points?
     
  2. jcsd
  3. Aug 13, 2009 #2

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    The output at time n is equal to the average of the input at times n, n-1, n-2, n-3, and n-4.

    - Warren
     
  4. Aug 13, 2009 #3
    thanks chroot,
    is there a better algorithm, which gives more accurate results ?
     
  5. Aug 13, 2009 #4

    minger

    User Avatar
    Science Advisor

    Define accurate. What are you trying to represent?
     
  6. Aug 13, 2009 #5
    Last edited by a moderator: May 4, 2017
  7. Aug 13, 2009 #6

    minger

    User Avatar
    Science Advisor

    Increase the "sample size" of your moving average. That should smooth it out some more.
     
  8. Aug 13, 2009 #7
    Look carefully at the peaks of the two graphs. The one with the running average has the peaks shifted to the right. The larger the sample size, the more they will shift to the right. You might consider moving your whole graph to the left by half the number of points in your running average.

    Or consider averaging a point with the same number of points to the left and to the right of it. This method has the disadvantage of averaging fewer points at the left and right extremes of your data.
     
  9. Aug 13, 2009 #8
    Do you know to implement a high pass filter?

    Are you working in Excel or programming this in a particular language?
     
  10. Aug 13, 2009 #9
    i'm programming this in C#,
    i don't know how to implement high pass filter, would you please explain what exactly do you mean by implementing a high pass filter and would it help?

    i didn't understand this, would you please explain this ?
     
  11. Aug 13, 2009 #10

    minger

    User Avatar
    Science Advisor

    That will depend on whether you're doing this in real-time. If you are, then you can only use data that you've already taken, or in the past. That will force you to use a backwards method. If you are doing this post-processing, then you can average from both behind and in front of your point of interest. This will keep the peaks at the right place in time.

    Alternately you can look at CFD dissipation algorithms which are similiar in a way to what you're doing.
     
  12. Aug 13, 2009 #11

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Well, you'd want a low-pass filter, not a high-pass.

    A low-pass filter is a system which permits low low frequencies to pass from input to output, but blocks high frequencies. The small wiggles on your plot are high-frequency information, and would be blocked by such a filter.

    If you don't know how to design one, it's really too complex a topic for us to explain here. If you have access to MATLAB, though, you can design some basic filters with just a couple of lines of code, and we can help you with that.

    - Warren
     
  13. Aug 13, 2009 #12
    Only you know what want and what you consider accurate. If what you want is to locate the peaks without regard to actual values this may be of help.

    Again given the raw data points at A(n) and output at B(n), B(n) = A(n+2) - A(n-2) + A(n)*Exp(t).
    You may be able to enhance the peaks by changing the value of t or raising the result to an odd power greater than one. Try starting with a value for t of -1.

    B(n) = (A(n+2) - A(n-2) + A(n)*Exp(t))^3



    Running averages typically average the current value with historical values resulting in a shift of the curve to the right by half the number of data points that are being averaged. To prevent that, the running average must average the same number of future points as it averages historical points. Obviously this isn't possible if you're doing real time processing or averaging at either end of the data series.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Moving average
  1. Average power. (Replies: 5)

Loading...