new_walsh_sequence

qctrlopencontrols.new_walsh_sequence(duration, paley_order, pre_post_rotation=False, name=None)

Creates the Walsh sequence.

Parameters

  • duration (float) – Total duration of the sequence τ\tau (in seconds).
  • paley_order (int) – The paley order kk of the Walsh sequence.
  • pre_post_rotation (bool , optional) – If True, a Xπ/2X_{\pi/2} rotation is added at the start and end of the sequence. Defaults to False.
  • name (string , optional) – Name of the sequence. Defaults to None.

Returns

The Walsh sequence.

Return type

DynamicDecouplingSequence

Notes

The Walsh sequence is defined by the switching function y(t)y(t) given by a Walsh function. To define the Walsh sequence, we first introduce the Rademacher function 1, which is defined as

Rj(x):=sgn[sin(2jπx)]  ,  x[0,1]  ,  j0  . R_j(x) := {\rm sgn}\left[\sin(2^j \pi x)\right] \;, \quad\; x \in [0, 1]\;, \; j \geq 0 \;.

The jj-th Rademacher function Rj(x)R_j(x) is thus a periodic square wave switching 2j12^{j-1} times between ±1\pm 1 over the interval [0,1][0, 1]. The Walsh function of Paley order kk is denoted PALk(x){\rm PAL}_k(x) and defined as

PALk(x)=Πj=1mRj(x)bj  ,  x[0,1]  . {\rm PAL}_k(x) = \Pi_{j = 1}^m R_j(x)^{b_j} \;, \quad\; x \in [0, 1] \;.

where (bm,bm1,,b1)(b_m, b_{m-1}, \cdots, b_1) is the binary representation of kk. That is

k=bm2m1+bm12m2++b120  , k = b_m 2^{m-1} + b_{m-1}2^{m-2} + \cdots + b_12^0 \;,

where m=m(k)m = m(k) indexes the most significant binary bit of kk.

The kk-th order Walsh sequence 2 is then defined by

y(t)=PALk(t/τ)   y(t) = {\rm PAL}_k(t / \tau) \;

with offset times {tj/τ}\{t_j / \tau\} defined at the switching times of the Walsh function.

References

[1] H. Rademacher, Math. Ann. 87, 112–138 (1922).

[2] H. Ball and M. J Biercuk, EPJ Quantum Technol. 2, 11 (2015).

Was this useful?