99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| 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()# |