Interpolate.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import os.path
  2. import numpy as np
  3. import itertools
  4. import Tools
  5. from scipy.interpolate import interp1d
  6. # Those patterns are used for tests and benchmarks.
  7. # For tests, there is the need to add tests for saturation
  8. def writeTests(config,format):
  9. NBSAMPLES=40
  10. x = np.linspace(0, NBSAMPLES, num=NBSAMPLES+1, endpoint=True)
  11. y = np.cos(-x**2/(NBSAMPLES - 1))
  12. f = interp1d(x, y)
  13. data=x+0.5
  14. data=data[:-1]
  15. z = f(data)
  16. if format != 0:
  17. data = data / 2.0**11
  18. if format != 0:
  19. config.writeInputQ31(1, data,"Input")
  20. else:
  21. config.writeInput(1, data)
  22. config.writeInput(1, y,"YVals")
  23. ref = z
  24. config.writeReference(1, ref)
  25. def generatePatterns():
  26. PATTERNDIR = os.path.join("Patterns","DSP","Interpolation","Interpolation")
  27. PARAMDIR = os.path.join("Parameters","DSP","Interpolation","Interpolation")
  28. configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
  29. configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
  30. configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
  31. configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
  32. writeTests(configf32,0)
  33. writeTests(configq31,31)
  34. writeTests(configq15,15)
  35. writeTests(configq7,7)
  36. if __name__ == '__main__':
  37. generatePatterns()