class qctrl.dynamic.types.colored_noise_simulation.Noise(*, power_densities, frequency_step, time_domain_sample_count, name=None)

The noise amplitude \(\beta(t)\) associated to a Hamiltonian term. You must provide its one-sided power spectral density \(S(f)\) (sampled at some frequencies \(\{f_k = k \Delta f\}\)). From it, the function generates a random discrete time series to represent \(\beta(t)\) between 0 and \(\tau\) for each simulation trajectory. The function builds a two-sided power spectral density \(\mathcal{S}(f)\), defined as \(\mathcal{S}(0) = S(0)\) and \(\mathcal{S}(f_k) = \mathcal{S}(-f_k) = S(|f_k|)/2\) for \(k > 0\); and an amplitude spectral density \(B(f_k) \equiv e^{i \phi(f_k)} \sqrt{\mathcal{S}(f_k)}\), such that \(|B(f_k)|^2 = \mathcal{S}(f_k)\). Any realization of \(B(f_k)\) with phases \(\phi(f_k)\) fulfilling \(\phi(f_k) = -\phi(-f_k)\) is a Hermitian function, and as such, corresponds to the spectrum of a real time domain process \(\beta(t)\). In particular, the function takes random phases \(\phi(f_k)\) from a flat distribution in the \((-\pi, \pi)\) range and generates a realization of \(\beta(t)\) from the inverse (discrete) Fourier transform of \(B(f)\). Namely, \(\beta(t_n) = \sqrt{\Delta f} \sum_{k=0}^{2N-2} B(f_k) \exp(2\pi \, i \, n \, k / (2N-1) )\) , with \(t_n = n \Delta t\) for \(n \in (0, ..., 2N-1)\) and \(\Delta t = ( (2N-1) \Delta f)^{-1}\). The function then upsamples this time series at \(N_\mathrm{segments}^{(\beta)}\) points between 0 and \(\tau\) via Whittaker–Shannon interpolation.

  • power_densities (List[float]) – The one-sided power spectral density of the noise, \(S(f)\), sampled at frequencies \((0, \Delta f, 2 \Delta f, \ldots)\).

  • frequency_step (float) – The difference between adjacent sample frequencies of the one-sided power spectral density, \(\Delta f\).

  • time_domain_sample_count (int) – The number of time domain samples, \(N_\mathrm{segments}^{(\beta)}\), to take for the noise amplitude across the duration of the simulation \(\tau\). The noise is treated as piecewise-constant with this number of segments.

  • name (str) – The name used to identify this noise in the output. If you don’t provide it, the function generates one.