1import os.path
2import numpy as np
3import itertools
4import Tools
5import scipy.signal.windows as win
6import matplotlib.pyplot as plt
7
8def genwelch(n):
9    ik = 2*np.array(range(n)) / n
10    w = ik -1;
11    w = 1 - w**2
12    if len(w)!=n:
13        print("Error with window len in Welch")
14        exit(1)
15    return(w)
16
17
18def genbartlett(n):
19    w = win.bartlett(n,sym=False)
20    return(w)
21
22def genhamming(n):
23    w = win.hamming(n,sym=False)
24    return(w)
25
26def genhanning(n):
27    w = win.hann(n,sym=False)
28    return(w)
29
30def gennuttall3(n):
31    w = win.general_cosine(n,
32        [0.375, 0.5 , 0.125 ],sym=False)
33    return(w)
34
35def gennuttall4(n):
36    w = win.general_cosine(n,
37        [0.3125, 0.46875,0.1875 , 0.03125],sym=False)
38    return(w)
39
40def gennuttall3a(n):
41    w = win.general_cosine(n,
42        [0.40897, 0.5 ,0.09103],sym=False)
43    return(w)
44
45def gennuttall3b(n):
46    w = win.general_cosine(n,
47        [0.4243801, 0.4973406 , 0.0782793 ],sym=False)
48    return(w)
49
50def gennuttall4a(n):
51    w = win.general_cosine(n,
52        [0.338946, 0.481973,0.161054 , 0.018027 ],sym=False)
53    return(w)
54
55def genblackman_harris_92db(n):
56    w = win.blackmanharris(n,sym=False)
57    return(w)
58
59def gennuttall4b(n):
60    w = win.general_cosine(n,
61        [0.355768, 0.487396 ,
62        0.144232 , 0.012604 ],sym=False)
63    return(w)
64
65def gennuttall4c(n):
66    w = win.nuttall(n,sym=False)
67    return(w)
68
69def genhft90d(n):
70    w = win.general_cosine(n,
71        [1 ,1.942604 ,
72         1.340318 , 0.440811 , 0.043097 ],sym=False)
73    return(w)
74
75def genhft95(n):
76    w = win.general_cosine(n,
77        [1, 1.9383379 ,
78         1.3045202 ,0.4028270 ,0.0350665 ]
79 ,sym=False)
80    return(w)
81
82def genhft116d(n):
83    w = win.general_cosine(n,
84        [1, 1.9575375 ,
85         1.4780705 ,0.6367431 ,
86         0.1228389 ,0.0066288 ]
87 ,sym=False)
88    return(w)
89
90def genhft144d(n):
91    w = win.general_cosine(n,
92        [1 ,1.96760033 ,
93         1.57983607 , 0.81123644 ,
94         0.22583558 ,0.02773848 , 0.00090360  ]
95 ,sym=False)
96    return(w)
97
98def genhft169d(n):
99    w = win.general_cosine(n,
100        [1, 1.97441843 ,
101         1.65409889 , 0.95788187 ,
102         0.33673420 , 0.06364622 ,
103         0.00521942 ,0.00010599   ]
104 ,sym=False)
105    return(w)
106
107def genhft196d(n):
108    w = win.general_cosine(n,
109        [1, 1.979280420 ,
110         1.710288951 , 1.081629853 ,
111         0.448734314 , 0.112376628 ,
112         0.015122992 ,0.000871252 , 0.000011896 ]
113 ,sym=False)
114    return(w)
115
116def genhft223d(n):
117    w = win.general_cosine(n,
118        [1, 1.98298997309,
119         1.75556083063 , 1.19037717712 ,
120         0.56155440797 , 0.17296769663 ,
121         0.03233247087 ,0.00324954578 ,
122         0.00013801040 ,0.00000132725 ]
123 ,sym=False)
124    return(w)
125
126def genhft248d(n):
127    w = win.general_cosine(n,
128        [1, 1.985844164102 ,
129         1.791176438506 , 1.282075284005 ,
130         0.667777530266 , 0.240160796576 ,
131         0.056656381764 ,0.008134974479 ,
132         0.000624544650 ,0.000019808998 ,
133         0.000000132974 ]
134 ,sym=False)
135    return(w)
136
137
138def writeTests(config,format):
139    NBSAMPLES=128
140
141    data1=np.random.randn(NBSAMPLES)
142    data1 = Tools.normalize(data1)
143    data1 = genwelch(NBSAMPLES)
144    config.writeReference(1, data1,"RefWelch_")
145
146    data1 = genbartlett(NBSAMPLES)
147    config.writeReference(2, data1,"RefBartlett_")
148
149    data1 = genhamming(NBSAMPLES)
150    config.writeReference(3, data1,"RefHamming_")
151
152    data1 = genhanning(NBSAMPLES)
153    config.writeReference(4, data1,"RefHanning_")
154
155    data1 = gennuttall3(NBSAMPLES)
156    config.writeReference(5, data1,"RefNuttall3_")
157
158    data1 = gennuttall4(NBSAMPLES)
159    config.writeReference(6, data1,"RefNuttall4_")
160
161    data1 = gennuttall3a(NBSAMPLES)
162    config.writeReference(7, data1,"RefNuttall3a_")
163
164    data1 = gennuttall3b(NBSAMPLES)
165    config.writeReference(8, data1,"RefNuttall3b_")
166
167    data1 = gennuttall4a(NBSAMPLES)
168    config.writeReference(9, data1,"RefNuttall4a_")
169
170    data1 = genblackman_harris_92db(NBSAMPLES)
171    config.writeReference(10, data1,"RefBlackman_harris_92db_")
172
173    data1 = gennuttall4b(NBSAMPLES)
174    config.writeReference(11, data1,"RefNuttall4b_")
175
176    data1 = gennuttall4c(NBSAMPLES)
177    config.writeReference(12, data1,"RefNuttall4c_")
178
179    data1 = genhft90d(NBSAMPLES)
180    config.writeReference(13, data1,"RefHft90d_")
181
182    data1 = genhft95(NBSAMPLES)
183    config.writeReference(14, data1,"RefHft95_")
184
185    data1 = genhft116d(NBSAMPLES)
186    config.writeReference(15, data1,"RefHft116d_")
187
188    data1 = genhft144d(NBSAMPLES)
189    config.writeReference(16, data1,"RefHft144d_")
190
191    data1 = genhft169d(NBSAMPLES)
192    config.writeReference(17, data1,"RefHft169d_")
193
194    data1 = genhft196d(NBSAMPLES)
195    config.writeReference(18, data1,"RefHft196d_")
196
197    data1 = genhft223d(NBSAMPLES)
198    config.writeReference(19, data1,"RefHft223d_")
199
200    data1 = genhft248d(NBSAMPLES)
201    config.writeReference(20, data1,"RefHft248d_")
202
203
204def generatePatterns():
205    PATTERNDIR = os.path.join("Patterns","DSP","Window","Window")
206    PARAMDIR = os.path.join("Parameters","DSP","Window","Window")
207
208    configf64=Tools.Config(PATTERNDIR,PARAMDIR,"f64")
209    configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
210
211    writeTests(configf64,Tools.F64)
212    writeTests(configf32,Tools.F32)
213
214
215
216if __name__ == '__main__':
217  generatePatterns()
218