2

I'm looking for two signals embedded in very noisy data. I know they are close to periodic and integral with the run, but are rather close (30s and 21s during a 210s measurement), and our sampling rate is low (1.25s). We have multiple observations to work with per sample.

I am wondering how I might deal with the problem of spectral leakage: it is evident in the FFT of our samples. Since our two signals of interest are so close together (10 and 7 cycles per measurement), it may well be that spectral power is leaking from the stronger of the two signals into the weaker one.

Will zero-padding with a window (rectangular or hamming) allow us to define a boundary between the two signal? Would another approach would be to concatenate these observations, driving the periodicities further apart (20 and 14)?

Thanks for your help, joseph

jdv
  • 33
  • 4

1 Answers1

3

Yes, concatenating the data will greatly reduce the spectral leakage problem. There will still be spectral leakage of course, but there will be more bins in between your signals-of-interest, so they won't leak as much into each other.

And yes, windowing should help too. You are already using a "rectangular" window. I would suggest trying other windows such as Hamming.

Jim Clay
  • 12,101
  • 31
  • 55
  • Thank you for your help with this. Is there any way for me to confirm you as the correct answer-er? A quick follow up: so I've had success implementing a hanning window in MATLAB which actually changes our results quite dramatically, but I notice is has the effect of making us less sensitive to BOTH signals (both the high-power signal and the low-power signal). The window is implemented as simply: win = hann(timePoints, 'periodic')'; win = repmat(win, [numberOfTimeseries, 1]); data = data*win; ft = fft(data, [], 2); NB: Data is 2D. Does this sound right to you? Thanks! – jdv Apr 06 '13 at 19:11
  • No, you don't want to "repmat" the window when you do larger FFT's. The window should be close to "1" in the middle and taper off to 0 at the edges. If you repmat the window it totally distorts what it is doing, because you have lots of tapers to 0 in the middle. As long as it's not a problem computationally/memory-wise just create a separate window for each FFT size. – Jim Clay Apr 07 '13 at 02:47
  • Actually, I just repmatted the window to match the number of columns in the data, so I could .* the data with a matching number of windows in one step... all columns of data are exactly the same length. – jdv Apr 08 '13 at 19:26