You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CMSIS-DSP/Testing/DebugScripts/debug.py

99 lines
3.0 KiB
Python

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