Implemented apodization.

This commit is contained in:
jupfi 2024-04-26 14:42:20 +02:00
parent 9d1b0fb3ac
commit 06a4cbc6cd

View file

@ -2,7 +2,9 @@
import logging import logging
import numpy as np import numpy as np
from decimal import Decimal
from nqrduck.helpers.signalprocessing import SignalProcessing as sp from nqrduck.helpers.signalprocessing import SignalProcessing as sp
from nqrduck.helpers.functions import Function
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -39,12 +41,44 @@ class Measurement:
IF_frequency: float = 0, IF_frequency: float = 0,
) -> None: ) -> None:
"""Initializes the measurement.""" """Initializes the measurement."""
# Convert to decimal
self.tdx = tdx self.tdx = tdx
self.tdy = tdy self.tdy = tdy
self.target_frequency = target_frequency self.target_frequency = target_frequency
self.fdx, self.fdy = sp.fft(tdx, tdy, frequency_shift) self.fdx, self.fdy = sp.fft(tdx, tdy, frequency_shift)
self.IF_frequency = IF_frequency self.IF_frequency = IF_frequency
def apodization(self, function : Function):
"""
Applies apodization to the measurement data.
Args:
function (Function): Apodization function.
returns:
Measurement : The apodized measurement.
"""
# Get the y data weights from the function
duration = (self.tdx[-1] - self.tdx[0]) * 1e-6
resolution = duration / len(self.tdx)
logger.debug("Resolution: %s", resolution)
y_weight = function.get_pulse_amplitude(duration, resolution)
tdy_measurement = self.tdy * y_weight
apodized_measurement = Measurement(
self.tdx,
tdy_measurement,
target_frequency=self.target_frequency,
IF_frequency=self.IF_frequency,
)
return apodized_measurement
# Data saving and loading # Data saving and loading
def to_json(self): def to_json(self):