Let's say that I have a 2-FSK signal recorded so that the SNR is around 20 dB and the noise seems to be more or less white. The distance between tones is greater than the minimum distance needed for non-coherent reception.

How would I go about determining its symbol rate?

I had some ideas, but it was a while since I actually had contact with FSK, so I'm probably forgetting something very obvious.

My initial idea was, since I have a recording, to use say spectrogram in Matlab and see how long each of the tones last. The downside here is that I need to be reasonably lucky with my data. I couldn't set up spectrogram parameters properly, so that end of each symbol is clearly visible on the time-frequency plots.

My next idea was to see if using analytical signal and getting the envelope would help. I don't think I obtained anything useful with that.

Later on, I tried to generate a signal of the same frequency as one of the symbols and then run a cross-correlation. I sort of expected the xcorr to be high when we're on the symbol of the same frequency as the one I'm using and not so high when we're not. What I got as the output is a sinusoid, but I couldn't figure out how to interpret it.

  • $\begingroup$ I'd also have suggested the spectrogram approach initially. Do you mind sharing the data so that we can have a look? $\endgroup$ Feb 13, 2017 at 14:14
  • $\begingroup$ @Maximilian Matthé The data isn't actually mine, it's from this question at HAM.SE. $\endgroup$
    – AndrejaKo
    Feb 13, 2017 at 14:16
  • $\begingroup$ @Maximilian Matthé Although, if more similar data samples are needed, I could provide them in .wav format, but it will take maybe a day or so. $\endgroup$
    – AndrejaKo
    Feb 13, 2017 at 14:17
  • $\begingroup$ Possible duplicate of FSK Demodulation, Bit Timing Recovery $\endgroup$
    – MBaz
    Feb 13, 2017 at 14:29
  • 1
    $\begingroup$ @AndrejaKo I did read the question, of course -- it was a simple misunderstanding. I've retracted my close vote and also edited your question title to be more accurate. $\endgroup$
    – MBaz
    Feb 13, 2017 at 14:38

1 Answer 1


One approach could be to perform an FM-detection step (e.g. an atan2() operation followed by a first-order difference) to transform the waveform to measurements of the approximate received frequency versus time. Your FSK signal should then look like a binary-modulated baseband waveform. Then you can apply a nonlinearity to the signal to induce a discrete frequency component at the unknown symbol rate. This component can then be identified by spectral analysis of the signal after you apply the nonlinearity. Many different types of nonlinearities can work for this, including absolute value, squaring, and magnitude-squaring detectors.

If you're doing a literature search, the terms you might want to use would be blind symbol rate estimation. That implies the estimation of the symbol rate without foreknowledge of the signal's structure.

  • $\begingroup$ That's interesting. I did remember the non-linearities part, but I forgot about the Fm-detection. I'll give it a go and see how it works out. $\endgroup$
    – AndrejaKo
    Feb 13, 2017 at 19:06
  • $\begingroup$ Yes, the FM-detect is important here. Most techniques that you will find for blind parameter estimation are geared toward linear modulations. FSK is not a linear modulation, but if you FM-detect it, it's approximately linear. $\endgroup$
    – Jason R
    Feb 13, 2017 at 19:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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