DSPRelated.com
Forums

Obtaining better Fourier coefficients by oversampling

Started by Peter Mairhofer June 26, 2011
Hi,

Suppose I have a (hypothetic, real) periodic, sign alternating function: 
The alternations take place at rate f_nyq ("Nyquist rate") and the 
pattern repeats every, say, 200 alternations. So the function is 
periodic with f_nyq/200.

If I want to obtain the Fourier coefficients (magnitude) I can sample 
the function with an oscilloscope and measure the peaks (which are 
spaced by f_nyq/200). I tried this - they perfectly match.

Now I oversample by factor 100 - the pattern with the coefficients 
repeats now 100 times but each of them repitition becomes lower and lower.

When I measure the peaks in the first block the coefficients do not 
match anymore. I can downsample the data by a 100 again (using MATLABs 
downsample) and the coefficients perfectly match again. But is there a 
way to obtain the coefficients directly from the oversampled spectrum? 
By combining the peaks from the different blocks? Do they help to 
provide a more accurate estimate?

This leads to the following question: Now suppose this function is not 
ideal anymore but is distorted by noise, low-pass effects and jitter. If 
I use MATLABs downsample() now the last coefficients are within the 
noise floor. The big question is now: Can I obtain more accurate 
measurements by using the oversampled spectrum? How?

I hope you can follow me. If not I could provide some MATLAB plots ...


Regards,
Peter


On 6/26/2011 8:24 AM, Peter Mairhofer wrote:
> Hi, > > Suppose I have a (hypothetic, real) periodic, sign alternating function: > The alternations take place at rate f_nyq ("Nyquist rate") and the > pattern repeats every, say, 200 alternations. So the function is > periodic with f_nyq/200. > > If I want to obtain the Fourier coefficients (magnitude) I can sample > the function with an oscilloscope and measure the peaks (which are > spaced by f_nyq/200). I tried this - they perfectly match. > > Now I oversample by factor 100 - the pattern with the coefficients > repeats now 100 times but each of them repitition becomes lower and lower. > > When I measure the peaks in the first block the coefficients do not > match anymore. I can downsample the data by a 100 again (using MATLABs > downsample) and the coefficients perfectly match again. But is there a > way to obtain the coefficients directly from the oversampled spectrum? > By combining the peaks from the different blocks? Do they help to > provide a more accurate estimate? > > This leads to the following question: Now suppose this function is not > ideal anymore but is distorted by noise, low-pass effects and jitter. If > I use MATLABs downsample() now the last coefficients are within the > noise floor. The big question is now: Can I obtain more accurate > measurements by using the oversampled spectrum? How? > > I hope you can follow me. If not I could provide some MATLAB plots ... > > > Regards, > Peter > >
Some general observations without bringing in Matlab or "oscilloscope" I think you mean that f_nyq is fa/2 but it's better to say so explicitly as f-nyq can mean more than one thing. If you are talking about a *function* that changes from +1 to -1 infinitely fast then the sampling frequency has to be infinite or something has to change .. analytically speaking. So, I'm going to assume that you are talking about a sequence of samples that already exists and "it is what it is". Do note that .... +1 -1 +1 -1 +1 -1 +1 +1 -1 +1 -1 +1 -1 +1 -1 ... is a particularly anomalous sequence where there are 2 +1 terms in the middle. I will assume that yours is more well behaved with some trepidation. I will state that if the sequence is identically: .... +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 ... and nothing more than that, then I'm not interested in such a contrived thingy and view this as a waste of time. Others may not.... You say: "the pattern repeats every, say, 200 alternations. So the function is periodic with f_nyq/200" So, I take it that it's not the trivial sequence I mention above. And, I take it that the function is periodic with fundamental frequency of fs/400; i.e. (fs/2)/200. I am also going to assume that you've taken ONE period of this sequence so that the time window is 400/fs so there is a sample of the spectrum at intervals of fs/400. You've not stated what the number of samples are so I will call that number "N". Since the first sample is at fs/400 then there must be 400 samples to get from zero to fs/400*(N-1). So, I guess that N=400. If this doesn't agree with what you understand then there may be a problem. That's because there can be TWO "periods". There is the period inherent in the data and there is the period imposed by the sample rate and number of samples in the time window = the number of samples in the spectral period over fs. OK so now you want to increase something by 100X but it's not clear whether you mean 1) the temporal window length or 2)the spectral period over fs If you increase the temporal window length by 100X then that can be done 2 ways: a) append 99N zeros to the original sequence b) get 99N more samples from the source of the sequence. If it's 1(a) then the original spectral samples will be interpolated by 100X and there will be evident spectral spreading ... the interim added samples of the spectrum won't be zero. If it's 1(b) and if there is now a sequence with 100 periods of the underlying periodic sequence and IF each period is the same then the interim added samples of the spectrum will be zero-valued. In either case the spectrum will rather "look the same" except for the interim samples. It won't repeat from zero to fs. If you increase fs by 100X and don't change the temporal window at all then the spectral samples will appear at intervals of fs/40,000 which are exactly the same frequencies as before. But now, the frequency range to the new fs is 100x greater. So, you will "see" more frequency samples and those added samples will be at relatively higher frequencies. If those samples happen to appear to be periodic in some fashion I'd call that an "accident" and not something expected. But, you could convince one of that with some analysis of the actual sequence. Of course this then assumes that there *is* an underlying "function" to be sampled. As you can tell, you might define things better..... Fred