| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import numpy as np
- from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show,semilogx, semilogy
- import scipy.fftpack
- import os.path
- import struct
- import argparse
- import PatternGeneration.DebugTools as d
- # Example script to read patterns and test outputs
- parser = argparse.ArgumentParser(description='Debug description')
- parser.add_argument('-f', nargs='?',type = str, default="f32", help="Format")
- parser.add_argument('-n', nargs='?',type = str, default="1", help="Test number")
- parser.add_argument('-i', nargs='?',type = bool, default=False, help="Ifft")
- parser.add_argument('-ui', nargs='?',const=True,type = bool, default=False, help="Display curves")
- args = parser.parse_args()
- FFTSIZES=[16,32,64,128,256,512,1024,2048,4096]
- if int(args.n) >= 19:
- args.i = True
- if args.i:
- n = int(args.n) - 18
- s = FFTSIZES[n-1]
- sc = n - 1 + 4
- inputPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputIFFTSamples_Noisy_%d_%d_%s.txt" % (s,n,args.f))
- refPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputSamples_Noisy_%d_%d_%s.txt" % (s,n,args.f))
- outputPath= os.path.join("Output","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_%s.txt" % args.n)
- else:
- s = FFTSIZES[int(args.n)-1]
- inputPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexInputSamples_Noisy_%d_%s_%s.txt" % (s,args.n,args.f))
- refPath = os.path.join("Patterns","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_Noisy_%d_%s_%s.txt" % (s,args.n,args.f))
- outputPath= os.path.join("Output","DSP","Transform","Transform%s" % args.f.upper(),"ComplexFFTSamples_%s.txt" % args.n)
- print(inputPath)
- if args.f == "f32":
- inSig = d.readF32Pattern(inputPath)
- inSig=inSig.view(dtype=np.complex128)
-
- refSig = d.readF32Pattern(refPath)
- refSig=refSig.view(dtype=np.complex128)
-
- sig = d.readF32Output(outputPath)
- sig=sig.view(dtype=np.complex128)
- if args.f == "q31":
- inSig = d.readQ31Pattern(inputPath)
- inSig=inSig.view(dtype=np.complex128)
-
- refSig = d.readQ31Pattern(refPath)
- refSig=refSig.view(dtype=np.complex128)
-
- sig = d.readQ31Output(outputPath)
- sig=sig.view(dtype=np.complex128)
- if args.f == "q15":
- inSig = d.readQ15Pattern(inputPath)
- inSig=inSig.view(dtype=np.complex128)
-
- refSig = d.readQ15Pattern(refPath)
- refSig=refSig.view(dtype=np.complex128)
-
- sig = d.readQ15Output(outputPath)
- sig=sig.view(dtype=np.complex128)
- if args.i and args.f != "f32":
- refSig = refSig / 2**sc
- if args.ui:
- if args.i:
- figure()
- plot(abs(inSig))
- figure()
- plot(np.real(refSig))
- figure()
- plot(np.real(sig))
- else:
- figure()
- plot(np.real(inSig))
- figure()
- plot(abs(refSig))
- figure()
- plot(abs(sig))
- print(d.SNR(refSig,sig))
- #figure()
- #plot(np.unwrap(np.angle(refSig)))
- #figure()
- #plot(np.unwrap(np.angle(sig)))
- #figure()
- #plot(np.unwrap(np.angle(sig)) - np.unwrap(np.angle(refSig)))
- show()#
|