From dab9d1e84bbb07b0f8c2771fb5a4ec7b3096f2d8 Mon Sep 17 00:00:00 2001 From: Tobias Hangleiter <tobias.hangleiter@rwth-aachen.de> Date: Wed, 12 Mar 2025 07:12:15 +0100 Subject: [PATCH] Add MonochromaticNoise Useful for comparing window functions --- src/python_spectrometer/daq/simulator.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/python_spectrometer/daq/simulator.py b/src/python_spectrometer/daq/simulator.py index 57b7ca3..4beb678 100644 --- a/src/python_spectrometer/daq/simulator.py +++ b/src/python_spectrometer/daq/simulator.py @@ -47,6 +47,24 @@ except ImportError as e: "'pip install qopt.'") from e +class MonochromaticNoise(DAQ): + def acquire(self, *, n_avg: int, fs: float, n_pts: int, delay: bool | float = False, + A: float = 1, f_0: float = 50, **settings) -> AcquisitionGenerator[DAQ.DTYPE]: + + if delay is True: + delay = 1 / settings['df'] + + t = np.arange(0, n_pts / fs, 1 / fs) + rng = np.random.default_rng() + + for _ in range(n_avg): + tic = time.perf_counter() + data = np.sin(2 * np.pi * (t * f_0 + rng.random())) + if delay: + time.sleep(delay - (time.perf_counter() - tic)) + yield data + + @dataclasses.dataclass class QoptColoredNoise(DAQ): """Simulates noise using :mod:`qopt:qopt`. -- GitLab