コード例 #1
0
def createChangingTimeDomainDataPhaseMatch(baseFilename, low = 0, high = 10):
	dat0 = dataImport.readADSFile(baseFilename % low)
	dat1 = dataImport.readADSFile(baseFilename % high)
	sps = dataImport.getSPS(baseFilename % low)
	if dataImport.getSPS(baseFilename % high) != sps:
		raise Exception("samples per second do not match - FAIL")
	
	dataSources = [dat0, dat1]
	indeces = [0, 0]
	
	if dataLength < float(constants.windowSize) / constants.samplesPerSecond * 1.5:
		raise Exception("Data length is too short - not getting full ffts of a single data source")
	
	numSamples = int(dataLength * sps)
	result = []
	output = []
	
	for i in range(numSignalChunks * 2):
		newIndex = i % 2
			
		if i == 0:
			dataToAppend = centerAroundZero(dataSources[newIndex][indeces[newIndex] : indeces[newIndex] + numSamples])
			indeces[newIndex] += numSamples
		else:
			#gotta phase match
			newData = centerAroundZero(dataSources[newIndex][indeces[newIndex] : int(indeces[newIndex] + numSamples + sps * startIndexRange*2)])
			startOffset = getBestStartIndex(result, newData, sps)
			#print startOffset
			dataToAppend = newData[startOffset: startOffset + numSamples]
			indeces[newIndex] += numSamples + startOffset
			
		if len(dataToAppend) != numSamples:
			raise Exception("Data to be appended is not the correct length")
		
		oldIndex = len(result)
		result += dataToAppend
		output += [newIndex] * numSamples
		
		
	#down sample result and output
	result = fftDataExtraction.downSample(result, sps, interpolate = True)
	output = fftDataExtraction.downSample(output, sps,)
	return result, output
コード例 #2
0
def getDownSampledData(filename):
	rawData = dataImport.readADSFile(filename)
	rawSps = dataImport.getSPS(filename)
	
	result = downSample(rawData, rawSps)
	return result