def est_tone_phase(sdata,a,f,sr):
samples = len(sdata)
points = 360
rms = numpy.zeros(points)
sum_min = numpy.sum(numpy.square(sdata))
min_index = 0
for offset in xrange(points):
sum = 0
phase = pi*offset/180.0
for i in xrange(samples):
diff = (sdata[i] - a*cos(2*pi*i*f/(sr/2.0) + phase))
sum += diff*diff
rms[offset] = sum
if (sum < sum_min):
sum_min = sum
min_index = offset
#print "sum_min",sum_min,' index = ',min_index
min_phase = pi*(min_index)/180.0
#print "min for phase sweep is ",sum_min,' at offset ',min_index
return min_phase
评论列表
文章目录