Search code examples
c++performancegaussiandata-acquisition

Estimate gaussian height from its area


We (I and my colleague) were given a device, which sends to us each second a large amount of discrete integer data (intensities) that tend to have gaussian distribution. These pseudo gaussians flows one by one and we are supposed to pick the largest intensity from center of each gaussian as fast as possible. Moreover, these data contain a noise, so we cannot say that each gaussian can be separated to two monotone parts => we cannot rely on simple fact that if data start to decline, we will find the maximum.

My colleauge came up with an idea:

  • introduce an intensity threshold to separate gaussians from each other
  • sum intensities of each gaussian to estimate its area and then estimate its height

But the question is, how can I fast estimate height of this pseudo gaussian from its area?

UPDATE:

To be more clear, the intensities that I get represents "function values" of a gaussian, or batter they represent heights of histogram bins.


Solution

  • You could use a moving average filter, and when that starts to decline, take the maximum value in that window as your height. As long as the noise in the signal is fairly low amplitude and high frequency, that should work reasonably well. You can always combine it with thresholding if required. The people on the DSP site will probably have much better ideas though, so I'd ask there.