debug.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import numpy as np
  2. from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show,semilogx, semilogy
  3. import scipy.fftpack
  4. import os.path
  5. import struct
  6. import argparse
  7. import PatternGeneration.DebugTools as d
  8. # Example script to read patterns and test outputs
  9. parser = argparse.ArgumentParser(description='Debug description')
  10. parser.add_argument('-f', nargs='?',type = str, default="f32", help="Format")
  11. parser.add_argument('-n', nargs='?',type = str, default="1", help="Test number")
  12. parser.add_argument('-i', nargs='?',type = bool, default=False, help="Ifft")
  13. parser.add_argument('-ui', nargs='?',const=True,type = bool, default=False, help="Display curves")
  14. args = parser.parse_args()
  15. FFTSIZES=[16,32,64,128,256,512,1024,2048,4096]
  16. if int(args.n) >= 19:
  17. args.i = True
  18. if args.i:
  19. n = int(args.n) - 18
  20. s = FFTSIZES[n-1]
  21. sc = n - 1 + 4
  22. inputPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputIFFTSamples_Noisy_%d_%d_%s.txt" % (s,n,args.f))
  23. refPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputSamples_Noisy_%d_%d_%s.txt" % (s,n,args.f))
  24. outputPath= os.path.join("Output","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_%s.txt" % args.n)
  25. else:
  26. s = FFTSIZES[int(args.n)-1]
  27. inputPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputSamples_Noisy_%d_%s_%s.txt" % (s,args.n,args.f))
  28. refPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_Noisy_%d_%s_%s.txt" % (s,args.n,args.f))
  29. outputPath= os.path.join("Output","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_%s.txt" % args.n)
  30. print(inputPath)
  31. if args.f == "f32":
  32. inSig = d.readF32Pattern(inputPath)
  33. inSig=inSig.view(dtype=np.complex128)
  34. refSig = d.readF32Pattern(refPath)
  35. refSig=refSig.view(dtype=np.complex128)
  36. sig = d.readF32Output(outputPath)
  37. sig=sig.view(dtype=np.complex128)
  38. if args.f == "q31":
  39. inSig = d.readQ31Pattern(inputPath)
  40. inSig=inSig.view(dtype=np.complex128)
  41. refSig = d.readQ31Pattern(refPath)
  42. refSig=refSig.view(dtype=np.complex128)
  43. sig = d.readQ31Output(outputPath)
  44. sig=sig.view(dtype=np.complex128)
  45. if args.f == "q15":
  46. inSig = d.readQ15Pattern(inputPath)
  47. inSig=inSig.view(dtype=np.complex128)
  48. refSig = d.readQ15Pattern(refPath)
  49. refSig=refSig.view(dtype=np.complex128)
  50. sig = d.readQ15Output(outputPath)
  51. sig=sig.view(dtype=np.complex128)
  52. if args.i and args.f != "f32":
  53. refSig = refSig / 2**sc
  54. if args.ui:
  55. if args.i:
  56. figure()
  57. plot(abs(inSig))
  58. figure()
  59. plot(np.real(refSig))
  60. figure()
  61. plot(np.real(sig))
  62. else:
  63. figure()
  64. plot(np.real(inSig))
  65. figure()
  66. plot(abs(refSig))
  67. figure()
  68. plot(abs(sig))
  69. print(d.SNR(refSig,sig))
  70. #figure()
  71. #plot(np.unwrap(np.angle(refSig)))
  72. #figure()
  73. #plot(np.unwrap(np.angle(sig)))
  74. #figure()
  75. #plot(np.unwrap(np.angle(sig)) - np.unwrap(np.angle(refSig)))
  76. show()#