docstr: `a` and `b` define the interval [a, b] of the Fourier representation.
  `M` specifies the number of frequencies to use.
docstr_tok: ["`","a","`","and","`","b","`","define","the","interval","[","a",",","b","]","of","the","Fourier","representation",".","`","M","`","specifies","the","number","of","frequencies","to","use","."]
code: def __init__(self, a, b, M):
      """
      `a` and `b` define the interval [a, b] of the Fourier representation.
      `M` specifies the number of frequencies to use.
      """
      # [a, b] defining the interval of the Fourier representation:
      self.a = gpflow.Parameter(a, dtype=gpflow.default_float())
      self.b = gpflow.Parameter(b, dtype=gpflow.default_float())
      self.M = M
      # integer array defining the frequencies, ω_m = 2π (b - a)/m:
      self.ms = np.arange(M)
  
imports: import numpy
  import tensorflow
  from check_shapes import Shape
  import gpflow
  from gpflow import covariances
  from gpflow import kullback_leiblers
  from gpflow.base import TensorLike
  from gpflow.ci_utils import reduce_in_tests
  from gpflow.inducing_variables import InducingVariables
  from gpflow.utilities import to_default_float
  import matplotlib.pyplot
  import gpflow.posteriors
label_desc: Use image node_id 1 to create a new FourierFeatures1D object from inherited base classes: InducingVariables with example: obj = FourierFeatures1D(a, b, M)