Create a real sampleable signal constructed from Fourier components.
Use this function to create a signal defined in terms of Fourier (sine/cosine)
basis signals that can be optimized by varying their coefficients and, optionally,
their frequencies.
- Parameters
duration (float) – The total duration \(\tau\) of the signal.
initial_coefficient_lower_bound (float, optional) – The lower bound \(c_\mathrm{min}\) on the initial coefficient
values. Defaults to -1.
initial_coefficient_upper_bound (float, optional) – The upper bound \(c_\mathrm{max}\) on the initial coefficient
values. Defaults to 1.
fixed_frequencies (list[float], optional) – The fixed non-zero frequencies \(\{f_m\}\) to use for the Fourier
basis. Must be non-empty if provided. Must be specified in the inverse
units of duration (for example if duration is in seconds, these
values must be given in Hertz).
optimizable_frequency_count (int, optional) – The number of non-zero frequencies \(M\) to use, if the
frequencies can be optimized. Must be greater than zero if provided.
randomized_frequency_count (int, optional) – The number of non-zero frequencies \(M\) to use, if the
frequencies are to be randomized but fixed. Must be greater than zero
if provided.
- Returns
The optimizable, real-valued, sampleable signal built from the
appropriate Fourier components.
- Return type
Stf(1D, real)
Warning
You must provide exactly one of fixed_frequencies, optimizable_variable,
or randomized_frequency_count.
Notes
This function sets the basis signal frequencies \(\{f_m\}\)
depending on the chosen mode:
For fixed frequencies, you provide the frequencies directly.
For optimizable frequencies, you provide the number of frequencies
\(M\), and this function creates \(M\) unbounded optimizable
variables \(\{f_m\}\), with initial values in the ranges
\(\{[(m-1)/\tau, m/\tau]\}\).
For randomized frequencies, you provide the number of frequencies
\(M\), and this function creates \(M\) randomized constants
\(\{f_m\}\) in the ranges \(\{[(m-1)/\tau, m/\tau]\}\).
After this function creates the \(M\) frequencies \(\{f_m\}\), it
produces the signal
\[\alpha^\prime(t) = v_0 +
\sum_{m=1}^M [ v_m \cos(2\pi t f_m) + w_m \sin(2\pi t f_m) ],\]
where \(\{v_m,w_m\}\) are (unbounded) optimizable variables, with
initial values bounded by \(c_\mathrm{min}\) and
\(c_\mathrm{max}\). This function produces the final signal \(\alpha(t)\).
You can use the signals created by this function for chopped random basis
(CRAB) optimization .
References