# How to determine the symbol rate of a 2-FSK signal?

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.

• I'd also have suggested the spectrogram approach initially. Do you mind sharing the data so that we can have a look? Feb 13 '17 at 14:14
• @Maximilian Matthé The data isn't actually mine, it's from this question at HAM.SE. Feb 13 '17 at 14:16
• @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. Feb 13 '17 at 14:17
• Possible duplicate of FSK Demodulation, Bit Timing Recovery
– MBaz
Feb 13 '17 at 14:29
• @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.
– MBaz
Feb 13 '17 at 14:38

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.