From 6f16d93939db4ab38bf1c8deabbb0f8717908117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Sierro?= Date: Thu, 14 Sep 2023 16:24:51 +0200 Subject: [PATCH] new interp method --- src/scgenerator/noise.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/scgenerator/noise.py b/src/scgenerator/noise.py index e8475ca..08d81d9 100644 --- a/src/scgenerator/noise.py +++ b/src/scgenerator/noise.py @@ -15,7 +15,6 @@ class NoiseMeasurement: freq: np.ndarray psd: np.ndarray phase: np.ndarray | None = None - psd_interp: interp1d = field(init=False) rng: np.random.Generator = field(default_factory=np.random.default_rng) _window_functions: ClassVar[dict[str, Callable[[int], np.ndarray]]] = {} @@ -77,11 +76,6 @@ class NoiseMeasurement: psd = psd.real**2 + psd.imag**2 return cls(freq, psd.mean(axis=0) / window_correction, phase=phase) - def __post_init__(self): - self.psd_interp = interp1d( - self.freq, self.psd, fill_value=(0, self.psd[-1]), bounds_error=False - ) - @property def psd_dBc(self) -> np.ndarray: return math.to_dB(self.psd, ref=1.0) @@ -168,7 +162,7 @@ class NoiseMeasurement: ) f = np.linspace(0, fmax, nt // 2 + 1) - interp = self.psd_interp(f) + interp = np.interp(f, self.freq, self.psd, left=0, right=self.psd[-1]) interp[0] = 0 return f, interp @@ -208,10 +202,6 @@ class NoiseMeasurement: return integrated_noise(self.freq, self.psd) -def log_power(x): - return 10 * np.log10(np.abs(np.where(x == 0, 1e-7, x))) - - def integrated_noise(freq: np.ndarray, psd: np.ndarray) -> float: """ given a normalized spectrum, computes the total rms RIN in the provided frequency window