sinc_convolution_kernel

Graph.sinc_convolution_kernel(cutoff_frequency)

Create a convolution kernel representing the sinc function.

Use this kernel to eliminate angular frequencies above a certain cutoff.

Parameters

cutoff_frequency (float or Tensor) – Upper limit ωc\omega_c of the range of angular frequencies that you want to preserve. The filter eliminates components of the signal that have higher angular frequencies.

Returns

A node representing the sinc function to use in a convolution.

Return type

ConvolutionKernel

SEE ALSO

Graph.convolve_pwc : Create an Stf by convolving a Pwc with a kernel.

Graph.filter_and_resample_pwc : Filter a Pwc with a sinc filter and resample it.

Graph.gaussian_convolution_kernel : Create a convolution kernel representing a normalized Gaussian.

Notes

The sinc kernel that this node represents is defined as

K(t)=sin(ωct)πt. K(t) = \frac{\sin(\omega_c t)}{\pi t}.

In the frequency domain, the sinc function is constant in the range [ωc,ωc][-\omega_c, \omega_c] and zero elsewhere. The filter it represents therefore passes angular frequencies only in that range.

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 sinc kernel.

>>> sinc_kernel = graph.sinc_convolution_kernel(cutoff_frequency=300e6)
>>> sinc_kernel
<ConvolutionKernel: operation_name="sinc_convolution_kernel">
>>> pwc_signal
<Pwc: name="pwc_signal_#1", operation_name="pwc_signal", value_shape=(), batch_shape=()>
>>> filtered_signal = graph.convolve_pwc(pwc=pwc_signal, kernel=sinc_kernel)
>>> filtered_signal
<Stf: operation_name="convolve_pwc", value_shape=(), batch_shape=()>

Refer to the How to create leakage-robust single-qubit gates user guide to find the example in context.

Was this useful?