1
1
# Authors: CommPy contributors
2
2
# License: BSD 3-Clause
3
3
4
+ import numpy as np
4
5
from numpy import array
5
- from numpy .testing import run_module_suite , assert_raises , assert_equal
6
-
7
- from commpy .sequences import pnsequence
6
+ from numpy .testing import run_module_suite , assert_raises , assert_equal , assert_almost_equal
8
7
8
+ from commpy .sequences import pnsequence , zcsequence
9
9
10
10
def test_pnsequence ():
11
11
# Test the raises of errors
12
12
with assert_raises (ValueError ):
13
13
pnsequence (4 , '001' , '1101' , 2 ** 4 - 1 )
14
+ with assert_raises (ValueError ):
14
15
pnsequence (4 , '0011' , '110' , 2 ** 4 - 1 )
15
16
16
17
# Test output with
@@ -19,6 +20,34 @@ def test_pnsequence():
19
20
assert_equal (pnsequence (4 , (0 , 0 , 1 , 1 ), array ((1 , 1 , 0 , 1 )), 7 ), array ((1 , 1 , 0 , 0 , 1 , 0 , 1 ), int ),
20
21
err_msg = 'Pseudo-noise sequence is not the one expected.' )
21
22
23
+ def test_zcsequence ():
24
+ # Test the raises of errors
25
+ with assert_raises (ValueError ):
26
+ zcsequence (u = - 1 , seq_length = 20 , q = 0 )
27
+ with assert_raises (ValueError ):
28
+ zcsequence (u = 20 , seq_length = 0 , q = 0 )
29
+ with assert_raises (ValueError ):
30
+ zcsequence (u = 3 , seq_length = 18 , q = 0 )
31
+ with assert_raises (ValueError ):
32
+ zcsequence (u = 3.1 , seq_length = 11 , q = 0 )
33
+ with assert_raises (ValueError ):
34
+ zcsequence (u = 3 , seq_length = 11.1 , q = 0 )
35
+ with assert_raises (ValueError ):
36
+ zcsequence (u = 3 , seq_length = 11 , q = 0.1 )
37
+
38
+ # Test output with
39
+ assert_almost_equal (zcsequence (u = 1 , seq_length = 2 , q = 0 ), array ([1.000000e+00 + 0.j , 6.123234e-17 - 1.j ]),
40
+ err_msg = 'CAZAC sequence is not the expected one.' )
41
+
42
+ # Test if output cross-correlation is valid
43
+ seqCAZAC = zcsequence (u = 3 , seq_length = 20 , q = 0 )
44
+ x = np .fft .fft (seqCAZAC ) / np .sqrt (seqCAZAC .size )
45
+ h = (np .fft .ifft (np .conj (x ) * x )* np .sqrt (seqCAZAC .size )).T
46
+ corr = np .absolute (h )** 2 / h .size
47
+ assert_almost_equal (corr [0 ], 1. ,
48
+ err_msg = 'CAZAC sequence auto-correlation is not valid, first term is not 1' )
49
+ assert_almost_equal (corr [1 :], np .zeros (corr .size - 1 ),
50
+ err_msg = 'CAZAC sequence auto-correlation is not valid, all terms except first are not 0' )
22
51
23
52
if __name__ == "__main__" :
24
53
run_module_suite ()
0 commit comments