Reply by dbd January 4, 20072007-01-04
dcarr66 wrote:
> I'm testing an A/D converter and need to average several acquired data sets > to improve SNR. I've done this in the past with coherently sampled data, > but in this case the data is not coherent and I'm not sure how to proceed. > I've tried windowing the data sets individually then averaging, but that > didn't work. > > I don't have sufficient control over the instrumentation to force coherent > sampling. Thanks in advance for any assistance.
You have not made clear what your goal is in 'improving SNR'. If you are trying to detect spurious tones, incoherent averaging will reduce the false alarm rate at a given detection threshold by reducing the variance of the averaged noise background. A classic reference on this is: TITLE: THE DETECTION PERFORMANCE OF FFT PROCESSORS FOR NARROWBAND SIGNALS PERSONAL AUTHOR: Walker, R.S. CORPORATE AUTHOR: Defence Research Establishment Atlantic, Dartmouth NS (CAN) ABSTRACT: The report analyses the detection performance of the Fast Fourier Transform (FFT) type signal processor for narrowband signals in white Gaussian noise. Sinusoidal and narrowband Gaussian signals are considered. The signal processor structure is based on the short-time averaged periodogram approach to spectral estimation. Processor parameters considered in the study include time-bandwidth product, data windowing, periodogram overlap, FFT zeroes extension and data normalization. A building-block approach is adopted, whereby the effects of each parameter on the detection threshold can be determined. Results are presented in graphical form. Hence, for a selected set of processor parameters, the appropriate detection threshold can be readily obtained. A thorough mathematical treatment of the problem is presented in the Appendices. DESCRIPTORS: Detection;Detection probability;Signal to noise ratio;Signal processing;Narrowband;White noise;Random noise;Fast fourier transforms REPORT NUMBER: DREA-TM-82-A; Technical Memorandum REPORT DATE: 15 Feb 1982 NUMBER OF PAGES : 107 This is downloadable for free from the Canadian DREA by searching at: http://pubs.drdc-rddc.gc.ca/BASIS/pcandid/www/engpub/SF Try searching by author last name in the author field. This paper comes up in the results. And did I say what the price is? Dale B. Dalrymple http://dbdimages.com
Reply by dcarr66 January 4, 20072007-01-04
>Coherent averaging will improve the SNR since the signal power gain is >N^2 while the noise gain (assuming white noise) is N. > >Incoherent averaging (summing magnitude or magnitude squared) does not >improve the SNR - it only reduces the variance of the noise estimate. >If you look at a sinusoid in noise and take a look at 1 FFT the noise >floor jumps around quite a bit. When you start averaging the FFTs >together the noise floor tends to smooth out and become more stable. >This is because the variance of the noise estimate (not the variance of >the noise itself) is reduced. This assumes that the noise is a wide >sense stationary process. > >The only way to improve the SNR is to do more coherent integration >which in my example would mean taking a longer FFT. > >For details you should look at the detection and estimation books: >Whalen - "Detection of Signals in Noise" >Steven Kay - has a couple of books out >Van Trees - Vol. I and Vol. III in his series discuss this. > >Cheers, >Dave > >
Thanks to everyone for the suggestions. I think have a better handle on the problem and definitely have some reading to do. Dave
Reply by David January 4, 20072007-01-04
dcarr66 wrote:
> >So, it reduces to the problem "is frequency X periodic at sampling rate Y, > > >and what is the period if it is periodic?" that we were posed with in the > > >DSP intro lectures? > > Yes, that's a better statement of the problem. > > >I'd suppose the next questions would be "how good an an average do you > >need?", and "how good is the average you are getting now?" > > I'm working with a 10-bit ADC that is digitizing a spread-spectrum signal > and need to determine the adjacent channel power ratio. I need to improve > the SNR by at least 6 dB, preferably by 10 dB. > > >In other terms, what do you mean by "didn't work"? > > The SNR didn't improve. I experimented with coherent sinusoids generated > in Matlab, and the SNR increases by 3 dB for every doubling of the number > of averages. > > Dave
Coherent averaging will improve the SNR since the signal power gain is N^2 while the noise gain (assuming white noise) is N. Incoherent averaging (summing magnitude or magnitude squared) does not improve the SNR - it only reduces the variance of the noise estimate. If you look at a sinusoid in noise and take a look at 1 FFT the noise floor jumps around quite a bit. When you start averaging the FFTs together the noise floor tends to smooth out and become more stable. This is because the variance of the noise estimate (not the variance of the noise itself) is reduced. This assumes that the noise is a wide sense stationary process. The only way to improve the SNR is to do more coherent integration which in my example would mean taking a longer FFT. For details you should look at the detection and estimation books: Whalen - "Detection of Signals in Noise" Steven Kay - has a couple of books out Van Trees - Vol. I and Vol. III in his series discuss this. Cheers, Dave
Reply by glen herrmannsfeldt January 4, 20072007-01-04
dcarr66 wrote:

> I'm testing an A/D converter and need to average several acquired data sets > to improve SNR. I've done this in the past with coherently sampled data, > but in this case the data is not coherent and I'm not sure how to proceed. > I've tried windowing the data sets individually then averaging, but that > didn't work.
Like others, I am a little unsure of what you are asking. In physics, for example light (and quantum mechanics in general), for coherent signals you sum (or average) amplitude (with appropriate phase included), for incoherent signals you sum (or average) the power. -- glen
Reply by Jerry Avins January 3, 20072007-01-03
dcarr66 wrote:
> I'm testing an A/D converter and need to average several acquired data sets > to improve SNR. I've done this in the past with coherently sampled data, > but in this case the data is not coherent and I'm not sure how to proceed. > I've tried windowing the data sets individually then averaging, but that > didn't work.
How does it fail? ... Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by Scott Seidman January 3, 20072007-01-03
"dcarr66" <carr@kenetinc.com> wrote in
news:3O-dnXutH9snaAbYnZ2dnUVZ_vupnZ2d@giganews.com: 

>>Do you need to do this in real time?? That is, can you resample with >>interpolation to a convenient Fs, and then do your FFT's, or would >>this cause too much distortion? >> > > I'm post-processing the acquired data, so I can do whatever Matlab > will allow! ;-) > > I'm not sure how I would resample, since I don't have any way of > knowing the absolute phase of each record. The reason the data is > noncoherent is that I'm digitizing the output from a vector signal > generator. The generator is looping a digital vector (that is > converted to analog) but I have no way of knowing the length of the > internal data record. Therefore I can't select an appropriate sample > rate (or resampled rate) that would make the data coherent. > > Did I understand your suggestion correctly? > > Dave
You seem to be wrapping this in a coherent/noncoherent way of thinking, but to me it seems to have more to do with not knowing how to slice up your signal to generate a meaningful average. In fact, much of the sampled data that people tend to work with is noncoherent, as there's often no a priori way to know the content of the signal you're working with before you lay out your sampling scheme, yet people manage to do ensemble averaging all the time. It's a little tough to lay out a plan knowing little about the guts of the problem (what the generator output look like, the frequencies of interest with respect to the sample rate, how long you can sample for, etc.), but I can lay out some generalities. When doing this sort of averaging, you need some mechanism to time-lock the epochs. The easiest way to to this would be to have something available like a bit toggle every time the buffer on the function generator rolls over . Barring this, I would try something like an autocorrelation on a long record (many iterations of the buffer) with fairly fast sampling to see if you could pull out the period-- or maybe even just a big ol' fft would serve the same purpose, with the lowest frequency spike indicating the frequency you want. Then, split up your data into epochs of this period, and average. Of course, this wouldn't time lock onto the START of the waveform, unless you have some information about where the start is that you could apply. If this isn't feasible (because the data is too noisy, or something like that), I'd try some random signal processing technique, like the Welch periodogram, to estimate the power spectral density. -- Scott Reverse name to reply
Reply by dcarr66 January 3, 20072007-01-03
>Do you need to do this in real time?? That is, can you resample with >interpolation to a convenient Fs, and then do your FFT's, or would this >cause too much distortion? >
I'm post-processing the acquired data, so I can do whatever Matlab will allow! ;-) I'm not sure how I would resample, since I don't have any way of knowing the absolute phase of each record. The reason the data is noncoherent is that I'm digitizing the output from a vector signal generator. The generator is looping a digital vector (that is converted to analog) but I have no way of knowing the length of the internal data record. Therefore I can't select an appropriate sample rate (or resampled rate) that would make the data coherent. Did I understand your suggestion correctly? Dave
Reply by Scott Seidman January 3, 20072007-01-03
"dcarr66" <carr@kenetinc.com> wrote in 
news:b_CdnddgTpz1SQbYnZ2dnUVZ_qKknZ2d@giganews.com:

> The SNR didn't improve. I experimented with coherent sinusoids generated > in Matlab, and the SNR increases by 3 dB for every doubling of the number > of averages. > > Dave >
Ensemble averaging of N epochs should increase your SNR by a factor of sqrt(N), best case (i.e., truly random gaussian noise), so there's your 3dB. Do you need to do this in real time?? That is, can you resample with interpolation to a convenient Fs, and then do your FFT's, or would this cause too much distortion? -- Scott Reverse name to reply
Reply by dcarr66 January 3, 20072007-01-03
>So, it reduces to the problem "is frequency X periodic at sampling rate Y,
>and what is the period if it is periodic?" that we were posed with in the
>DSP intro lectures?
Yes, that's a better statement of the problem.
>I'd suppose the next questions would be "how good an an average do you >need?", and "how good is the average you are getting now?"
I'm working with a 10-bit ADC that is digitizing a spread-spectrum signal and need to determine the adjacent channel power ratio. I need to improve the SNR by at least 6 dB, preferably by 10 dB.
>In other terms, what do you mean by "didn't work"?
The SNR didn't improve. I experimented with coherent sinusoids generated in Matlab, and the SNR increases by 3 dB for every doubling of the number of averages. Dave
Reply by Scott Seidman January 3, 20072007-01-03
"dcarr66" <carr@kenetinc.com> wrote in 
news:PcudnQP3x5M9WwbYnZ2dnUVZ_uCinZ2d@giganews.com:

>>> >>> >>What do you mean by "coherent" sampling? >> >> >>-- >>Scott > > http://www.maxim-ic.com/appnotes.cfm/appnote_number/1040/ > > Dave >
So, it reduces to the problem "is frequency X periodic at sampling rate Y, and what is the period if it is periodic?" that we were posed with in the DSP intro lectures? I'd suppose the next questions would be "how good an an average do you need?", and "how good is the average you are getting now?" In other terms, what do you mean by "didn't work"? -- Scott Reverse name to reply