Hello .

There is an array of records sinusoidal oscillations (approximately ten waves).

Could you tell me the simplest algorithm to calculate the average period.

For example, I found the first the highest point of the first wave, how to find the highest point of the second wave ?

as there is the right thing to do ?

## sinusoidal oscillations - average period

### Re: sinusoidal oscillations - average period

If it's a zero centered sine wave, looking for zero crossings is better than looking for peaks because the slope is at its maximum there, hence less measurement uncertainty. If it's not zero centered then take the mean of the waveform, subtract that, and it's approximately zero centered.

If the signal has significant noise on top of the fundamental sinusoid there may need to be "sanity checking" to mitigate the potential for multiple zero crossings per cycle. This might take the form of rejecting zero crossings that are too close together based on a priori knowledge or based on the measurements of other cycles.

If the signal has significant noise on top of the fundamental sinusoid there may need to be "sanity checking" to mitigate the potential for multiple zero crossings per cycle. This might take the form of rejecting zero crossings that are too close together based on a priori knowledge or based on the measurements of other cycles.

- mrburnette
**Posts:**2197**Joined:**Mon Apr 27, 2015 12:50 pm**Location:**Greater Atlanta-
**Contact:**

### Re: sinusoidal oscillations - average period

As MarkB stated, it is better to work out the zero-crossing. A visual may help:

http://forum.arduino.cc/index.php?topic=381851.15

Lots more approaches via Google

Ray

http://forum.arduino.cc/index.php?topic=381851.15

Lots more approaches via Google

Ray

### Re: sinusoidal oscillations - average period

It all depends on quality of the signal (how much noise is there). I would start by having graph of some samples, just to visually see, how it looks - if it is "mainly sinus with some rounding errors", then it is easy - divide ovelall time by count of zero crossing (not just zeroes, as it can have like -0.3;-0.1;+0.1;+0.3 sequences)

If it is not zero centered, I woul use a "mean" as center (half numbers are higher, half lower then this) rather than "average" (sum divided by count), as one really high peak can move average above all other values.

If there is a little noise around zero ( -0.3, -0.1, +0.1, -0.1, +0.1, +0.3, +0.1, +0.5 ...) then I would collect lenhgts above zero and legnths below zero, then discarted all short values, leaving only those long and count that long. (say if it is not much wild, then discard anything shorter then 1/5 of average and it should be good)

If it is more noise than signal, then count moving averages to make the oscilation somehow "fluent" and then count the period as above.

It would really help to know, how long the period "should be" if it is in hertz, kilohertz or megahertz so to discard noise, not the signal (again graphical helps a lot) - if you have sound of 50Hz modulated by 1kHz, do you need value like 40-60Hz, or value like 0.8-1.2kHz? ( something like https://thenounproject.com/term/soundwave/112351/ or just google "sound wave" pictures)

If it is not zero centered, I woul use a "mean" as center (half numbers are higher, half lower then this) rather than "average" (sum divided by count), as one really high peak can move average above all other values.

If there is a little noise around zero ( -0.3, -0.1, +0.1, -0.1, +0.1, +0.3, +0.1, +0.5 ...) then I would collect lenhgts above zero and legnths below zero, then discarted all short values, leaving only those long and count that long. (say if it is not much wild, then discard anything shorter then 1/5 of average and it should be good)

If it is more noise than signal, then count moving averages to make the oscilation somehow "fluent" and then count the period as above.

It would really help to know, how long the period "should be" if it is in hertz, kilohertz or megahertz so to discard noise, not the signal (again graphical helps a lot) - if you have sound of 50Hz modulated by 1kHz, do you need value like 40-60Hz, or value like 0.8-1.2kHz? ( something like https://thenounproject.com/term/soundwave/112351/ or just google "sound wave" pictures)