Decimate.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import os.path
  2. import numpy as np
  3. import itertools
  4. import Tools
  5. # Those patterns are used for tests and benchmarks.
  6. # For tests, there is the need to add tests for saturation
  7. def writeTests(config):
  8. NBSAMPLES=256
  9. NUMTAPS = 64
  10. samples=np.random.randn(NBSAMPLES)
  11. taps=np.random.randn(NUMTAPS)
  12. samples = samples/max(samples)
  13. taps = taps/max(taps)
  14. config.writeInput(1, samples,"Samples")
  15. config.writeInput(1, taps,"Coefs")
  16. PATTERNDIR = os.path.join("Patterns","DSP","Filtering","DECIM","DECIM")
  17. PARAMDIR = os.path.join("Parameters","DSP","Filtering","DECIM","DECIM")
  18. configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
  19. configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
  20. configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
  21. #configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
  22. writeTests(configf32)
  23. writeTests(configq31)
  24. writeTests(configq15)
  25. #writeTests(configq7)
  26. # For decimation, number of samples must be a multiple of decimation factor.
  27. # So we cannot use a generator in the test description.
  28. numTaps = [1,2,4,8,16]
  29. blockSizeFactor = [1,2,4,8,16]
  30. decimationFactor = [4,5,8]
  31. combinations = [numTaps,blockSizeFactor,decimationFactor]
  32. finalLength = 3 * len(numTaps) * len(decimationFactor) * len(blockSizeFactor)
  33. r=np.array([(n,blFactor*dFactor,dFactor) for (n,blFactor,dFactor) in itertools.product(*combinations)])
  34. r = r.reshape(finalLength)
  35. configf32.writeParam(1, r)
  36. configq31.writeParam(1, r)
  37. configq15.writeParam(1, r)
  38. # For interpolation, number taps must be a multiple of interpolation factor.
  39. # So we cannot use a generator in the test description.
  40. numTapsFactor = [1,2,4,8,16]
  41. blockSize = [16,64]
  42. interpolationFactor = [2,4,5,8,9]
  43. combinations = [numTapsFactor,blockSize,interpolationFactor]
  44. finalLength = 3 * len(numTapsFactor) * len(interpolationFactor) * len(blockSize)
  45. r=np.array([(nFactor * iFactor,bl,iFactor) for (nFactor,bl,iFactor) in itertools.product(*combinations)])
  46. r = r.reshape(finalLength)
  47. configf32.writeParam(2, r)
  48. configq31.writeParam(2, r)
  49. configq15.writeParam(2, r)