Skip to content

Commit 52da77d

Browse files
fix incorrect CAZAC sequence
1 parent bd47de1 commit 52da77d

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

commpy/sequences.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,23 +72,35 @@ def pnsequence(pn_order, pn_seed, pn_mask, seq_length):
7272

7373
return pnseq
7474

75-
def zcsequence(u, seq_length):
75+
def zcsequence(u, seq_length, q=0):
7676
"""
7777
Generate a Zadoff-Chu (ZC) sequence.
7878
7979
Parameters
8080
----------
8181
u : int
82-
Root index of the the ZC sequence.
82+
Root index of the the ZC sequence: u>0.
8383
8484
seq_length : int
85-
Length of the sequence to be generated. Usually a prime number.
85+
Length of the sequence to be generated. Usually a prime number:
86+
u<seq_length, greatest-common-denominator(u,seq_length)=1.
87+
88+
q : int
89+
Cyclic shift of the sequence (default 0).
8690
8791
Returns
8892
-------
8993
zcseq : 1D ndarray of complex floats
9094
ZC sequence generated.
9195
"""
92-
zcseq = exp((-1j * pi * u * arange(seq_length) * (arange(seq_length)+1)) / seq_length)
96+
assert u>0
97+
assert u<seq_length
98+
assert np.gcd(u,seq_length)==1
99+
for el in [u,seq_length,q]:
100+
assert float(el).is_integer()
101+
102+
cf = seq_length%2
103+
n = arange(seq_length)
104+
zcseq = exp( -1j * pi * u * n * (n+cf+2.*q) / seq_length)
93105

94106
return zcseq

0 commit comments

Comments
 (0)