I'm trying to measure the amplitude of a sinusoidal component in a noisy signal.

Since the signal frequency is known beforehand, I'm calculating scalar product with a sine and cosine base function at the given frequency (see this thread: Measuring amplitude of a spectral component)

$$a = \left<y,\cos(2\pi t f_c/f_s)\right>$$

$$b = \left<y,\sin(2\pi t f_c/f_s)\right>$$

Now the problem that I've noticed is that when i'm running the ADC at half speed (312Ksps) I get less noise (less variance over multiple measurements with the input signal being stable, and all other parameters staying the same) than with full speed (625Ksps) - in fact the standard deviation doubles.

I know that this noise is coming from the digital processing, not from the ADC chip, because if I'm running the chip at full speed doing a 2x decimation (while keeping the same number of samples), the standard deviation is the same as running the chip at half speed.

I tried to investigate the source of the variance. Since the input signal is very stable (I know this from other measurements), I suspect the variance is coming from out-of-band noise.

I tried to make a quick simulation to see how other frequencies around the base frequency affect the result. The base frequency was 7200 Hz. The curve below is generated by keeping the base functions constant, and generating input signals with frequencies running from 7 - 8 KHz in small steps.

The 0's of the curve seem to follow $f_s/N_{samples}$. That is to say if I’m taking 65536 samples @ 625Ksps, the distance between the 0's is about 9.53 Hz. With the same nr. of samples @ 312Ksps, the distance will be 4.77 Hz. This means that the width of the central lobe (where the signal pickup is maximal) is 2x in the case of 625K sample rate.

I suspect that this is why more noise is picked up (noise as components around the signal with varying amplitude).

Bandwidth with different sampling speeds

Now I understand that with the same nr. of samples and the lower fs you see more cycles of the singal.

However with the higher fs you see less cycles with more resolution. These should be equivalent right?

How do I get rid of the noise?


Separating two sinusoidal frequencies become easier if the two are completely orthogonal (or nearly so) over some length. A longer FFT will have the frequencies of its orthogonal basis vectors, thus the nulls of adjacent result bins, closer together. A long length of time (more cycles) will approach near orthogonality from other nearby frequency hypothesis better than more samples of a short segment. If you subtract short segments of sinusoids that are much closer together in frequency than the difference between basis vectors of an FFT of that length, you may get a difference waveform that is smaller than some noise level. This can't happen with windows of nearly orthogonal frequency sinusoids unless the magnitude of the noise is of the same order or greater than that of the magnitude than the signal.

  • Therefore using a higher Fs over less time is not equivalent to sampling for a more time.

  • So, to get rid of "noise", sample for a longer amount of time to gain more frequency resolution information (both in multiple peak separation and in isolated peak location estimation).

| improve this answer | |
  • $\begingroup$ still, intuitively nr. of samples = information content... i'm I wrong? what do you mean by completely orthogonal? two sines of different frequencies are orthogonal over infinite samples (if frequencies are integer multiples then over an integer nr. of cycles i think) $\endgroup$ – Dániel Turi Jul 21 '16 at 8:39
  • $\begingroup$ If you sample the same point many times, you gain no information, so number of sample != info content. Nearby points are almost the same, so add almost no more information. $\endgroup$ – hotpaw2 Jul 21 '16 at 16:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.