mirror of
https://github.com/nqrduck/nqrduck-spectrometer.git
synced 2024-11-09 12:30:01 +00:00
Implemented apodization.
This commit is contained in:
parent
9d1b0fb3ac
commit
06a4cbc6cd
1 changed files with 34 additions and 0 deletions
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue