File: time_czt.py

package info (click to toggle)
python-czt 0.0.7-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,392 kB
  • sloc: python: 690; makefile: 3
file content (68 lines) | stat: -rw-r--r-- 1,991 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""Time czt.czt function."""

import numpy as np
import czt
import timeit


def model(t):
    """Signal model."""
    output = (1.0 * np.sin(2 * np.pi * 1e3 * t) +
              0.3 * np.sin(2 * np.pi * 2e3 * t) +
              0.1 * np.sin(2 * np.pi * 3e3 * t)) * np.exp(-1e3 * t)
    return output


# Create time-domain data
t = np.arange(0, 20e-3, 1e-4)
dt = t[1] - t[0]
Fs = 1 / dt
N = len(t)
x = model(t)


# Tests
def test1():
    czt.czt(x, simple=True)
    return
def test2():
    czt.czt(x, t_method='ce')
    return
def test3():
    czt.czt(x, t_method='pd')
    return
def test4():
    czt.czt(x, t_method='mm')
    return
def test5():
    czt.czt(x, t_method='scipy')
    return
def test6():
    czt.czt(x, t_method='ce', f_method='recursive')
    return
def test7():
    czt.czt(x, t_method='pd', f_method='recursive')
    return


N = 100
setup = "from __main__ import test1 as test"
print("Test 1: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "simple"))
N = 1000
setup = "from __main__ import test2 as test"
print("Test 2: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "ce"))
N = 100
setup = "from __main__ import test3 as test"
print("Test 3: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "pd"))
N = 1000
setup = "from __main__ import test4 as test"
print("Test 4: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "mm"))
N = 1000
setup = "from __main__ import test5 as test"
print("Test 5: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "scipy"))
N = 10
setup = "from __main__ import test6 as test"
print("Test 6: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "ce / recursive"))
N = 10
setup = "from __main__ import test7 as test"
print("Test 7: {:7.4f} ms\t{}".format(timeit.Timer("test()", setup=setup).timeit(number=N)/N*1000, "pd / recursive"))