Skip to content
Snippets Groups Projects
Commit 87235d63 authored by Jean-Baptiste Bayle's avatar Jean-Baptiste Bayle
Browse files

Merge branch 'save-interpolation-parameters' into 'master'

Save interpolation order

See merge request !15
parents 2bf3d32a 774b5ad7
No related branches found
No related tags found
1 merge request!15Save interpolation order
Pipeline #105887 passed
......@@ -164,38 +164,29 @@ class Instrument:
self.init_aafilter(aafilter)
def init_interpolation(self, interpolation):
"""Initialize interpolation."""
"""Initialize or design the interpolation function.
We support no interpolation, a custom interpolation function, or Lagrange interpolation.
Args:
parameters: see `interpolation` docstring in `__init__()`
"""
if interpolation is None:
logging.info("Disabling interpolation")
self.interpolation_order = None
self.interpolate = lambda x, _: x
elif callable(interpolation):
logging.info("Using user-provided interpolation function")
self.interpolation_order = None
self.interpolate = lambda x, shift: x if numpy.isscalar(x) else interpolation(x, shift)
else:
logging.info("Designing interpolation function")
self.interpolate = lambda x, shift: x if numpy.isscalar(x) \
else Instrument.design_interpolation(interpolation)(x, shift)
@staticmethod
def design_interpolation(parameters):
"""Design the interpolation function.
We currently support Lagrange interpolation.
Args:
parameters: see `interpolation` docstring in `__init__()`
Returns:
A function which interpolates data.
"""
method = parameters[0]
if method == 'lagrange':
logging.debug("Using Lagrange interpolations")
order = parameters[1]
logging.debug("Lagrange interpolation order is %s", order)
return lambda x, shift: dsp.timeshift(x, shift, order)
raise ValueError(f"invalid interpolation parameters '{parameters}'")
method = str(interpolation[0])
if method == 'lagrange':
self.interpolation_order = int(interpolation[1])
logging.debug("Using Lagrange interpolation of order %s", self.interpolation_order)
self.interpolate = lambda x, shift: \
x if numpy.isscalar(x) else dsp.timeshift(x, shift, self.interpolation_order)
raise ValueError(f"invalid interpolation parameters '{interpolation}'")
def init_aafilter(self, aafilter):
"""Initialize antialiasing filter and downsampling."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment