##// END OF EJS Templates
Bug plotting RTI fixed for jroplot_heispectra, jroplot_parameters, jroplot_spectra
Bug plotting RTI fixed for jroplot_heispectra, jroplot_parameters, jroplot_spectra

File last commit:

r328:fd0cad7e2abd
r567:753c4d780d0c
Show More
testcode.py
145 lines | 3.5 KiB | text/x-python | PythonLexer
Miguel Valdez
test de la codificacion
r320 import numpy
import scipy.signal
import matplotlib
matplotlib.use("TKAgg")
import pylab as pl
import time
Miguel Valdez
Adicion de algunos tests
r328 def getInverseFilter(code, lenfilter=8*28):
Miguel Valdez
test de la codificacion
r320
nBauds = len(code)
if lenfilter == None:
lenfilter = 10*nBauds
codeBuffer = numpy.zeros((lenfilter), dtype=numpy.float32)
codeBuffer[0:nBauds] = code
inverse_filter = numpy.real(numpy.fft.ifft(1.0/numpy.fft.fft(codeBuffer)))
inverse_filter = numpy.roll(inverse_filter, shift=120)
# pl.plot(codeBuffer)
# pl.plot(inverse_filter)
# pl.show()
return inverse_filter
def getSignal(nChannels, nHeis):
u = numpy.complex(1,2)
u /= numpy.abs(u)
signal = numpy.random.rand(nChannels, nHeis)
signal = signal.astype(numpy.complex)
signal *= u
return signal
def time_decoding(signal, code):
ini = time.time()
nBauds = len(code)
nChannels, nHeis = signal.shape
datadec = numpy.zeros((nChannels, nHeis - nBauds + 1), dtype=numpy.complex)
tmpcode = code.astype(numpy.complex)
#######################################
ini = time.time()
for i in range(nChannels):
datadec[i,:] = numpy.correlate(signal[i,:], code, mode='valid')/nBauds
print time.time() - ini
return datadec
def freq_decoding(signal, code):
ini = time.time()
nBauds = len(code)
nChannels, nHeis = signal.shape
codeBuffer = numpy.zeros((nHeis), dtype=numpy.float32)
codeBuffer[0:nBauds] = code
fft_code = numpy.conj(numpy.fft.fft(codeBuffer)).reshape(1, -1)
######################################
ini = time.time()
fft_data = numpy.fft.fft(signal, axis=1)
conv = fft_data*fft_code
data = numpy.fft.ifft(conv, axis=1)/nBauds
datadec = data[:,:-nBauds+1]
print time.time() - ini
return datadec
def fftconvol_decoding(signal, code):
ini = time.time()
nBauds = len(code)
nChannels, nHeis = signal.shape
datadec = numpy.zeros((nChannels, nHeis - nBauds + 1), dtype=numpy.complex)
tmpcode = code.astype(numpy.complex)
#######################################
ini = time.time()
for i in range(nChannels):
datadec[i,:] = scipy.signal.fftconvolve(signal[i,:], code[-1::-1], mode='valid')/nBauds
print time.time() - ini
return datadec
def filter_decoding(signal, code):
ini = time.time()
nBauds = len(code)
nChannels, nHeis = signal.shape
inverse_filter = getInverseFilter(code)
datadec = numpy.zeros((nChannels, nHeis + len(inverse_filter) - 1), dtype=numpy.complex)
#######################################
ini = time.time()
for i in range(nChannels):
datadec[i,:] = numpy.convolve(signal[i,:], inverse_filter, mode='full')
datadec = datadec[:,120:120+nHeis]
print time.time() - ini
return datadec
nChannels, nHeis = 8, 3900
index = 300
code = numpy.array([1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, -1, 1, -1])
signal = getSignal(nChannels, nHeis)
signal[0,index:index+len(code)] = code*10
signalout = time_decoding(signal, code)
signalout1 = freq_decoding(signal, code)
signalout2 = fftconvol_decoding(signal, code)
signalout3 = filter_decoding(signal, code)
#pl.plot(numpy.abs(signal[0]))
pl.plot(numpy.abs(signalout[0]))
#pl.plot(numpy.abs(signalout1[0]))
#pl.plot(numpy.abs(signalout2[0]))
Miguel Valdez
Adicion de algunos tests
r328 pl.plot(numpy.abs(signalout3[0])+0.5)
Miguel Valdez
test de la codificacion
r320 pl.show()