blob: f1558c33ab0e293de3a17be86e5695a53f7188d4 [file] [log] [blame]
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()#