gaussian_convolution_kernel
- Graph.gaussian_convolution_kernel(std, offset=0)
Create a convolution kernel representing a normalized Gaussian.
Use this kernel to allow angular frequencies in the range roughly determined by its width, and progressively suppress components outside that range.
- Parameters:
std (float or Tensor) – Standard deviation \(\sigma\) of the Gaussian in the time domain. The standard deviation in the frequency domain is its inverse, so that a high value of this parameter lets fewer angular frequencies pass.
offset (float or Tensor or None, optional) – Center \(\mu\) of the Gaussian distribution in the time domain. Use this to offset the signal in time. Defaults to 0.
- Returns:
A node representing a Gaussian function to use in a convolution.
- Return type:
See also
convolve_pwc
Create an Stf by convolving a Pwc with a kernel.
sinc_convolution_kernel
Create a convolution kernel representing the sinc function.
Notes
The Gaussian kernel that this node represents is defined as:
\[K(t) = \frac{e^{-(t-\mu)^2/(2\sigma^2)}}{\sqrt{2\pi\sigma^2}}.\]In the frequency domain, this Gaussian has standard deviation \(\omega_c= \sigma^{-1}\). The filter it represents therefore passes angular frequencies roughly in the range \([-\omega_c, \omega_c]\).
For more information on Stf nodes see the Working with time-dependent functions in Boulder Opal topic.
Examples
Filter a signal by convolving it with a Gaussian kernel.
>>> gaussian_kernel = graph.gaussian_convolution_kernel(std=1.0, offset=3.0) >>> gaussian_kernel <ConvolutionKernel: operation_name="gaussian_convolution_kernel"> >>> signal <Pwc: name="alpha", operation_name="pwc_signal", value_shape=(), batch_shape=()> >>> filtered_signal = graph.convolve_pwc(pwc=signal, kernel=gaussian_kernel) >>> filtered_signal <Stf: operation_name="convolve_pwc", value_shape=(), batch_shape=()>
Refer to the How to characterize the bandwidth of a transmission line using a qubit as a probe user guide to find the example in context.