real_fourier_stf_signal
- Graph.real_fourier_stf_signal(duration, initial_coefficient_lower_bound=-1, initial_coefficient_upper_bound=1, fixed_frequencies=None, optimizable_frequency_count=None, randomized_frequency_count=None)
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] or None, optional) – The fixed non-zero frequencies \(\{f_m\}\) to use for the Fourier basis. If provided, must be non-empty and 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 or None, optional) – The number of non-zero frequencies \(M\) to use, if the frequencies can be optimized. Defaults to 0.
randomized_frequency_count (int or None, optional) – The number of non-zero frequencies \(M\) to use, if the frequencies are to be randomized but fixed. Defaults to 0.
- 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.
See also
real_fourier_pwc_signal
Corresponding operation for Pwc.
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 [1].
References