The length LL bilevel sequences a(n)a(n) and b(n)b(n) are Golay complementary sequences if
and only if the following condition holds, where ¤¤ denotes the
autocorrelation operator [1]:
a
(
n
)
¤
a
(
n
)
+
b
(
n
)
¤
b
(
n
)
=
2
L
δ
(
n
)
a
(
n
)
¤
a
(
n
)
+
b
(
n
)
¤
b
(
n
)
=
2
L
δ
(
n
)
(1)and δ(n)δ(n) is the Kronecker delta function. Many references in the audio signal processing literature refer to such sequences as Golay codes; however, to avoid confusion with Golay error-correcting codes used in digital communication, we call the sequences Golay complementary sequences. Recall that
(Equation 1) can also be written using **, the convolution
operator:
a
(
-
n
)
*
a
(
n
)
+
b
(
-
n
)
*
b
(
n
)
=
2
L
δ
(
n
)
a
(
-
n
)
*
a
(
n
)
+
b
(
-
n
)
*
b
(
n
)
=
2
L
δ
(
n
)
(2)Given that aL(n)aL(n) and bL(n)bL(n) are Golay, it turns out that
a2L(n)=[aL(n)bL(n)]a2L(n)=[aL(n)bL(n)] and
b2L(n)=[aL(n)-bL(n)]b2L(n)=[aL(n)-bL(n)] are also Golay. This means
that Golay complementary sequences can be constructed recursively given seed
sequences such as a2(n)=[11]a2(n)=[11] and
b2(n)=[1-1]b2(n)=[1-1]. See the
MATLAB/Octave source code generate_golay.m
for details. Notice also that the resulting bilevel sequences consist
of only 1's and -1-1's. This means that the signal contains the
maximum possible power level given that |s(n)|≤1∀n|s(n)|≤1∀n.
This property is helpful for minimizing measurement noise.
Let ra(n)=a(n)*h(n)ra(n)=a(n)*h(n) be the response due to the input
a(n)a(n), and let rb(n)=b(n)*h(n)rb(n)=b(n)*h(n) be the response due to the input
b(n)b(n). Due to (Equation 1), the impulse response h(n)h(n) may be
determined as follows:
h
(
n
)
=
1
2
L
(
a
(
n
)
¤
r
a
(
n
)
+
b
(
n
)
¤
r
b
(
n
)
)
h
(
n
)
=
1
2
L
(
a
(
n
)
¤
r
a
(
n
)
+
b
(
n
)
¤
r
b
(
n
)
)
(3)See
golay_response.m
for more details.
"A clear explanation of estimating impulse responses in acoustic signals using Golay codes and swept sine waves."