##// END OF EJS Templates
Se anadio el modulo cfunctions donde se agrego la funcion optimizada para decodificar
Miguel Valdez -
r301:c56217e15a4c
parent child
Show More
@@ -0,0 +1,10
1 import numpy
2 cimport numpy
3
4 def decoder(numpy.ndarray[numpy.float32_t, ndim=2] fft_code, numpy.ndarray[numpy.float32_t, ndim=2] data):
5
6 fft_data = numpy.fft.fft(data, axis=1)
7 conv = fft_data*fft_code
8 data = numpy.fft.ifft(conv, axis=1)
9
10 return data No newline at end of file
@@ -0,0 +1,6
1 from distutils.core import setup
2 from distutils.extension import Extension
3 from Cython.Distutils import build_ext
4 setup(
5 cmdclass = {'build_ext': build_ext},
6 ext_modules = [Extension("cfunctions", ["cfunctions.pyx"])] ) No newline at end of file
@@ -12,6 +12,11 from jrodata import *
12 from jrodataIO import *
12 from jrodataIO import *
13 from jroplot import *
13 from jroplot import *
14
14
15 try:
16 import cfunctions
17 except:
18 pass
19
15 class ProcessingUnit:
20 class ProcessingUnit:
16
21
17 """
22 """
@@ -591,9 +596,9 class Decoder(Operation):
591
596
592 self.__nChannels, self.__nHeis = shape
597 self.__nChannels, self.__nHeis = shape
593
598
594 self.__codeBuffer = numpy.zeros((self.nCode, self.__nHeis))
599 self.__codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.float)
595
600
596 self.__codeBuffer[:,0:self.nBaud] = self.code[:,:]
601 self.__codeBuffer[:,0:self.nBaud] = self.code
597
602
598 self.fft_code = numpy.conj(numpy.fft.fft(self.__codeBuffer, axis=1))
603 self.fft_code = numpy.conj(numpy.fft.fft(self.__codeBuffer, axis=1))
599
604
@@ -623,7 +628,23 class Decoder(Operation):
623
628
624 return ndatadec, datadec
629 return ndatadec, datadec
625
630
631 def convolutionInFreqOpt(self, data):
632
633 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
634
635 data = cfunctions.decoder(fft_code, data)
626
636
637 datadec = data[:,:-self.nBaud+1]
638 ndatadec = self.__nHeis - self.nBaud + 1
639
640 if self.__profIndex == self.nCode-1:
641 self.__profIndex = 0
642 return ndatadec, datadec
643
644 self.__profIndex += 1
645
646 return ndatadec, datadec
647
627 def convolutionInTime(self, data):
648 def convolutionInTime(self, data):
628
649
629 self.__nChannels, self.__nHeis = data.shape
650 self.__nChannels, self.__nHeis = data.shape
General Comments 0
You need to be logged in to leave comments. Login now