comnum.fm_discriminator#

comnum.fm_discriminator(x, fs)#

The instantaneous frequency (Hz) of x by the polar discriminator, fs/(2π) arg(x[n] x*[n-1]) (0 for the first sample): exact within ±fs/2, insensitive to the amplitude.

Parameters:
  • x (array_like) – complex samples at baseband.

  • fs (float) – the sampling rate (Hz).

Returns:

the frequency of every sample (float64, Hz).

Return type:

numpy.ndarray

Raises:

ValueError – for an input that is not a 1-D array of numbers.

Examples

>>> import comnum, numpy as np
>>> x = comnum.fm_modulate(np.full(100, 0.5), 228e3, 75e3)
>>> round(float(comnum.fm_discriminator(x, 228e3)[50]), 6)
37500.0