datatype.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import cmsisdsp.fixedpoint as f
  2. import numpy as np
  3. #: F64 format
  4. F64 = 64
  5. #: F32 format
  6. F32 = 32
  7. #: F16 format
  8. F16 = 16
  9. #: Q31 fixed point format
  10. Q31 = 31
  11. #: Q15 fixed point format
  12. Q15 = 15
  13. #: Q7 fixed point format
  14. Q7 = 7
  15. class UnknownCMSISDSPDataType(Exception):
  16. pass
  17. def convert(samples,format):
  18. """
  19. Return an array of scalars in a given format converted from an array of doubles.
  20. It is typically used to convert a reference table in double to a table with a lower
  21. accuracy used for a specific implementation of an algorithm.
  22. :param samples: array of double.
  23. :type samples: array
  24. :param format: Format identification (F64,F32,F16,Q31,Q15,Q7).
  25. :type format: int
  26. :return: array of scalars in chosen format.
  27. :rtype: array
  28. """
  29. if format==Q31:
  30. return(f.toQ31(np.array(samples)))
  31. if format==Q15:
  32. return(f.toQ15(np.array(samples)))
  33. if format==Q7:
  34. return(f.toQ7(np.array(samples)))
  35. if format==F64:
  36. return(np.array(samples).astype(dtype=np.float64))
  37. if format==F32:
  38. return(np.array(samples).astype(dtype=np.float32))
  39. if format==F16:
  40. return(np.array(samples).astype(dtype=np.float16))
  41. raise UnknownCMSISDSPDataType