I need to detect a short (10ms) VHF pulse that occurs every 1.5s at a specific frequency (e.g., 150.20 MHz).

I have an SDR that support IQ sample rates up to 10MSPS but due to computing constraints 2.5MSPS is probably the max I can handle (currently working with 1 MSPS with 150 MHz as the central frequency).

I am new to DSP and started simple: Collect 500ms of samples, do a standard DFT using python's mlab.magnitude_spectrum(), throw away everything under an empirically defined threshold, followed by a simple peak finding routine. Then repeat with the next 500ms.

That works quite well but as the pulse strength drops (move away from the pulse source) this fails to find anything.

I have searched around a bit on how to tackle this and come across suggestions around measuring kurtosis, averaging spectra, autocorrelation, etc. If anything averaging seemed to make things worse but given I'm new to the area some guidance would be appreciated as to how to best tackle this as well as a good way to set the threshold. Is there something in the time domain I can do? Python (pseudo) code would be a plus.

  • $\begingroup$ There is a tutorial video, on ettus.com if I'm not mistaken, that shows how to use autocorrelation to detect a repetitive signal out of the noise. The tool used in the video is GNURadio. I hope this helps. $\endgroup$ – MBaz Oct 23 '15 at 17:46
  • $\begingroup$ Your use of the DFT sounds reasonable to me. However, you're trying to detect a 150.2 MHz analog sinusoid while sampling at only one megasample/second. This is, as conehead Beldar would say, "a massive amount of undersampling." That troubles me because after periodic sampling all of the spectral energy in your analog signal folds back onto itself to be contained in a one Mhz bandwidth of your sampled sequence. @dgorissen, what is the bandwidth of the analog signal you are sampling at a rate of 1 megasamples/second? $\endgroup$ – Richard Lyons Oct 23 '15 at 18:54
  • $\begingroup$ @RichardLyons edited question. The central frequency of the sdr is set to 150 MHz so that means I just need to resolve 200khz for which 1 MSPS is enough. At least thats my understanding? $\endgroup$ – dgorissen Oct 23 '15 at 19:09
  • $\begingroup$ @dgorissen: Ah OK. I should have paid more attention when you wrote "supports IQ sample rate." I'll bet you're correct. Is your SDR an "RTL-SDR"? $\endgroup$ – Richard Lyons Oct 23 '15 at 22:01
  • $\begingroup$ @dgorissen: As for when your input signal strength drops, spectral averaging should have been helpful. Perhaps performing larger-sized DFTs will help. And perhaps a "matched filter" would be useful. For matched filters, you might have a look at: dsp.stackexchange.com/questions/9094/…. $\endgroup$ – Richard Lyons Oct 23 '15 at 23:32

Your Answer

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

Browse other questions tagged or ask your own question.