new_walsh_sequence¶

qctrlopencontrols.
new_walsh_sequence
(duration, paley_order, pre_post_rotation=False, name=None)[source]¶ Creates the Walsh sequence.
 Parameters
duration (float) – Total duration of the sequence \(\tau\) (in seconds).
paley_order (int) – The paley order \(k\) of the Walsh sequence.
pre_post_rotation (bool, optional) – If
True
, a \(X_{\pi/2}\) rotation is added at the start and end of the sequence. Defaults toFalse
.name (string, optional) – Name of the sequence. Defaults to
None
.
 Returns
The Walsh sequence.
 Return type
Notes
The Walsh sequence is defined by the switching function \(y(t)\) given by a Walsh function. To define the Walsh sequence, we first introduce the Rademacher function 1, which is defined as
\[R_j(x) := {\rm sgn}\left[\sin(2^j \pi x)\right] \;, \quad\; x \in [0, 1]\;, \; j \geq 0 \;.\]The \(j\)th Rademacher function \(R_j(x)\) is thus a periodic square wave switching \(2^{j1}\) times between \(\pm 1\) over the interval \([0, 1]\). The Walsh function of Paley order \(k\) is denoted \({\rm PAL}_k(x)\) and defined as
\[{\rm PAL}_k(x) = \Pi_{j = 1}^m R_j(x)^{b_j} \;, \quad\; x \in [0, 1] \;.\]where \((b_m, b_{m1}, \cdots, b_1)\) is the binary representation of \(k\). That is
\[k = b_m 2^{m1} + b_{m1}2^{m2} + \cdots + b_12^0 \;,\]where \(m = m(k)\) indexes the most significant binary bit of \(k\).
The \(k\)th order Walsh sequence 2 is then defined by
\[y(t) = {\rm PAL}_k(t / \tau) \;\]with offset times \(\{t_j / \tau\}\) defined at the switching times of the Walsh function.
References