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()# |