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