Window.py 5.2 KB

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