Beispiel #1
0
from scipy import *
from USTimeSeries import USTimeSeries
import bhacalc
# Specify the parameters for the underlying signal & sampling.
dt = 1/48000.
f = 984.3750	# The value near 1k for 1024 samples
f = 1007.8125	# The value near 1k for 2048 samples (1/2 way between for 1024)
#f = 1031.25
#f = 1017.	# A value between grid pts
#f = 1000.
A1 = 1000.
phi1 = 0.
A2 = 0.01*A1
phi2 = pi/2.
A3 = 0.0001*A1
phi3 = pi/4.
sig = 1.
N_s = 1024
# Simulate some real-valued data from a sinusoid with white noise.
times = arange(N_s)*dt
data = A1*cos(2*pi*f*times - phi1) + A2*cos(4*pi*f*times - phi2) + \
	A3*cos(6*pi*f*times - phi3) + random.normal(0.,sig,(N_s))
usts = USTimeSeries(data, dt)
usts.transform(8)
print 'f range: ', usts.f_range()
m = 3
prjxns = zeros((2*m))
fund, rl, im, p_fund = usts.f_info(f)
for i in range(1,m+1):
	fh = i*f
Beispiel #2
0
def test_multiplet():
    from USTimeSeries import USTimeSeries
    from numpy.random import normal

    # Specify the parameters for the underlying signal & sampling.
    dt = 1 / 48000.0
    f1 = 984.3750  # The value near 1k for 1024 samples
    f1 = 1007.8125  # The value near 1k for 2048 samples (1/2 way between for 1024)
    # fs = 1031.25
    # fs = 1017.	# A value between grid pts
    # fs = 1000.
    A1 = 100.0
    phi1 = 0.0
    f2 = f1 - 30.0
    A2 = 0.01 * A1
    phi2 = pi / 2.0
    sig = 1.0
    N_s = 1024
    nf = 2

    # Simulate some real-valued data from a sinusoid with white noise.
    times = arange(N_s) * dt
    data = A1 * cos(2 * pi * f1 * times - phi1) + A2 * cos(2 * pi * f2 * times - phi2) + 0 * normal(0.0, sig, (N_s))

    usts = USTimeSeries(data, dt)
    usts.transform()
    print "unpadded f range: ", usts.f_range()
    usts.transform(16)
    print "padded f range: ", usts.f_range()

    # Try it with multiplet.
    print "... Multiplet version:"
    mult = Multiplet(usts, sig, exact=1)
    flist = (f1, f2)
    print "flist: ", flist
    mult.analyze(flist)
    print "used:  ", mult.flist
    print "Jac: ", mult.jac
    print "Suff. stat: ", mult.suf
    amps = mult.amplitudes()
    print "Amps:  ", amps
    print "Sigs:  ", mult.sigmas()
    print "Ratio: ", amps / mult.sigmas()

    # Now estimate the amplitudes using a nonpadded FFT.
    usts.transform()
    fund, rl, im, p_fund = usts.f_info(flist[0])
    for i in range(nf):
        f, rl, im, p = usts.f_info(flist[i])
        print i, flist[i], mult.flist[i], amps[i] / amps[0], f, sqrt(p / p_fund)
    print "Done!\n==============="
Beispiel #3
0
def test_harmonics(m):
    from USTimeSeries import USTimeSeries
    from numpy.random import normal

    # Specify the parameters for the underlying signal & sampling.
    dt = 1 / 48000.0
    f = 984.3750  # The value near 1k for 1024 samples
    f = 1007.8125  # The value near 1k for 2048 samples (1/2 way between for 1024)
    # f = 1031.25
    # f = 1017.	# A value between grid pts
    # f = 1000.
    A1 = 1000.0
    phi1 = 0.0
    A2 = 0.01 * A1
    phi2 = pi / 2.0
    A3 = 0.0001 * A1
    phi3 = pi / 4.0
    sig = 1.0
    N_s = 1024

    # Simulate some real-valued data from a sinusoid with white noise.
    times = arange(N_s) * dt
    data = (
        A1 * cos(2 * pi * f * times - phi1)
        + A2 * cos(4 * pi * f * times - phi2)
        + A3 * cos(6 * pi * f * times - phi3)
        + normal(0.0, sig, (N_s))
    )

    usts = USTimeSeries(data, dt)
    usts.transform(8)
    print "f range: ", usts.f_range()

    harm = Harmonics(m, usts, sig)
    harm.analyze(f)
    print "prjxns: ", harm.prjxns
    # print "metric: \n", harm.metric
    # print "Lower triangle:\n", harm.L
    print "Jac: ", harm.jac
    print "Suff. stat: ", harm.suf
    amps = harm.amplitudes()
    print "Amps:  ", amps
    print "Sigs:  ", harm.sigmas()
    print "Ratio: ", amps / harm.sigmas()

    # Now try it with multiplet.
    print "... Multiplet version:"
    mult = Multiplet(usts, sig)
    flist = []
    for i in range(m):
        flist.append((i + 1) * f)
    print "flist: ", flist
    mult.analyze(flist)
    print "Jac: ", mult.jac
    print "Suff. stat: ", mult.suf
    amps = mult.amplitudes()
    print "Amps:  ", amps
    print "Sigs:  ", mult.sigmas()
    print "Ratio: ", amps / mult.sigmas()

    # Now estimate the amplitudes using a nonpadded FFT.
    usts.transform()
    fund, rl, im, p_fund = usts.f_info(f)
    A_fund = sqrt(amps[0] ** 2 + amps[1] ** 2)
    for i in range(1, m + 1):
        f, rl, im, p = usts.f_info(i * fund)
        print i, i * harm.f, amps[i - 1] / amps[0], f, sqrt(p / p_fund)
    print "Done!\n==============="
Beispiel #4
0
#f = 1000.
A1 = 1000.
phi1 = 0.
A2 = 0.01 * A1
phi2 = pi / 2.
A3 = 0.0001 * A1
phi3 = pi / 4.
sig = 1.
N_s = 1024

# Simulate some real-valued data from a sinusoid with white noise.
times = arange(N_s) * dt
data = A1*cos(2*pi*f*times - phi1) + A2*cos(4*pi*f*times - phi2) + \
 A3*cos(6*pi*f*times - phi3) + random.normal(0.,sig,(N_s))

usts = USTimeSeries(data, dt)
usts.transform(8)
print 'f range: ', usts.f_range()

m = 3
prjxns = zeros((2 * m))
fund, rl, im, p_fund = usts.f_info(f)
for i in range(1, m + 1):
    fh = i * f
    fh, rl, im, p = usts.f_info(fh)
    print fh, i, 2 * i - 2, 2 * i - 1
    prjxns[2 * i - 2] = rl
    prjxns[2 * i - 1] = -im
print 'Prjxns: ', prjxns

gamma = 2 * pi * fund * dt
Beispiel #5
0
def test_multiplet():
	from USTimeSeries import USTimeSeries
	from numpy.random import normal

	# Specify the parameters for the underlying signal & sampling.
	dt = 1/48000.
	f1 = 984.3750	# The value near 1k for 1024 samples
	f1 = 1007.8125	# The value near 1k for 2048 samples (1/2 way between for 1024)
	#fs = 1031.25
	#fs = 1017.	# A value between grid pts
	#fs = 1000.
	A1 = 100.
	phi1 = 0.
	f2 = f1 - 30.
	A2 = 0.01*A1
	phi2 = pi/2.
	sig = 1.
	N_s = 1024
	nf = 2
	
	# Simulate some real-valued data from a sinusoid with white noise.
	times = arange(N_s)*dt
	data = A1*cos(2*pi*f1*times - phi1) + A2*cos(2*pi*f2*times - phi2) \
		+ 0*normal(0.,sig,(N_s))
	
	usts = USTimeSeries(data, dt)
	usts.transform()
	print 'unpadded f range: ', usts.f_range()
	usts.transform(16)
	print 'padded f range: ', usts.f_range()

	# Try it with multiplet.
	print '... Multiplet version:'
	mult = Multiplet(usts, sig, exact=1)
	flist = (f1, f2)
	print 'flist: ', flist
	mult.analyze(flist)
	print 'used:  ', mult.flist
	print "Jac: ", mult.jac
	print 'Suff. stat: ', mult.suf
	amps = mult.amplitudes()
	print 'Amps:  ', amps
	print 'Sigs:  ', mult.sigmas()
	print 'Ratio: ', amps/mult.sigmas()

	# Now estimate the amplitudes using a nonpadded FFT.
	usts.transform()
	fund, rl, im, p_fund = usts.f_info(flist[0])
	for i in range(nf):
		f, rl, im, p = usts.f_info(flist[i])
		print i, flist[i], mult.flist[i], amps[i]/amps[0], f, sqrt(p/p_fund)
	print "Done!\n==============="
Beispiel #6
0
def test_harmonics(m):
	from USTimeSeries import USTimeSeries
	from numpy.random import normal

	# Specify the parameters for the underlying signal & sampling.
	dt = 1/48000.
	f = 984.3750	# The value near 1k for 1024 samples
	f = 1007.8125	# The value near 1k for 2048 samples (1/2 way between for 1024)
	#f = 1031.25
	#f = 1017.	# A value between grid pts
	#f = 1000.
	A1 = 1000.
	phi1 = 0.
	A2 = 0.01*A1
	phi2 = pi/2.
	A3 = 0.0001*A1
	phi3 = pi/4.
	sig = 1.
	N_s = 1024
	
	# Simulate some real-valued data from a sinusoid with white noise.
	times = arange(N_s)*dt
	data = A1*cos(2*pi*f*times - phi1) + A2*cos(4*pi*f*times - phi2) + \
		A3*cos(6*pi*f*times - phi3) + normal(0.,sig,(N_s))
	
	usts = USTimeSeries(data, dt)
	usts.transform(8)
	print 'f range: ', usts.f_range()

	harm = Harmonics(m, usts, sig)
	harm.analyze(f)
	print 'prjxns: ', harm.prjxns
	#print "metric: \n", harm.metric
	#print "Lower triangle:\n", harm.L
	print "Jac: ", harm.jac
	print 'Suff. stat: ', harm.suf
	amps = harm.amplitudes()
	print 'Amps:  ', amps
	print 'Sigs:  ', harm.sigmas()
	print 'Ratio: ', amps/harm.sigmas()

	# Now try it with multiplet.
	print '... Multiplet version:'
	mult = Multiplet(usts, sig)
	flist = []
	for i in range(m):
		flist.append((i+1)*f)
	print 'flist: ', flist
	mult.analyze(flist)
	print "Jac: ", mult.jac
	print 'Suff. stat: ', mult.suf
	amps = mult.amplitudes()
	print 'Amps:  ', amps
	print 'Sigs:  ', mult.sigmas()
	print 'Ratio: ', amps/mult.sigmas()

	# Now estimate the amplitudes using a nonpadded FFT.
	usts.transform()
	fund, rl, im, p_fund = usts.f_info(f)
	A_fund = sqrt( amps[0]**2 + amps[1]**2 )
	for i in range(1,m+1):
		f, rl, im, p = usts.f_info(i*fund)
		print i, i*harm.f, amps[i-1]/amps[0], f, sqrt(p/p_fund)
	print "Done!\n==============="