##// END OF EJS Templates
Test codificacion
Miguel Valdez -
r308:92c20fb0e516
parent child
Show More
@@ -596,73 +596,60 class Decoder(Operation):
596
596
597 self.__nChannels, self.__nHeis = shape
597 self.__nChannels, self.__nHeis = shape
598
598
599 self.__codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.float32)
599 __codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.float32)
600
600
601 self.__codeBuffer[:,0:self.nBaud] = self.code
601 __codeBuffer[:,0:self.nBaud] = self.code
602
602
603 self.fft_code = numpy.conj(numpy.fft.fft(self.__codeBuffer, axis=1))
603 self.fft_code = numpy.conj(numpy.fft.fft(__codeBuffer, axis=1))
604
604
605 self.ndatadec = __nHeis - nBaud + 1
606
607 self.datadecTime = numpy.zeros((self.__nChannels, self.ndatadec), dtype=numpy.complex)
605
608
606 def convolutionInFreq(self, data):
609 def convolutionInFreq(self, data):
607
610
611 ini = time.time()
612
608 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
613 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
609
614
610 fft_data = numpy.fft.fft(data, axis=1)
615 fft_data = numpy.fft.fft(data, axis=1)
611
616
612
613 # conv = fft_data.copy()
614 # conv.fill(0)
615
616 conv = fft_data*fft_code
617 conv = fft_data*fft_code
617
618
618 data = numpy.fft.ifft(conv,axis=1)
619 data = numpy.fft.ifft(conv,axis=1)
619
620
620 datadec = data[:,:-self.nBaud+1]
621 datadec = data[:,:-self.nBaud+1]
621 ndatadec = self.__nHeis - self.nBaud + 1
622
622
623 if self.__profIndex == self.nCode-1:
623 print "Freq ", time.time() - ini
624 self.__profIndex = 0
625 return ndatadec, datadec
626
627 self.__profIndex += 1
628
624
629 return ndatadec, datadec
625 return datadec
630
626
631 def convolutionInFreqOpt(self, data):
627 def convolutionInFreqOpt(self, data):
632
628
629 ini = time.time()
630
633 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
631 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
634
632
635 data = cfunctions.decoder(fft_code, data)
633 data = cfunctions.decoder(fft_code, data)
636
634
637 datadec = data[:,:-self.nBaud+1]
635 datadec = data[:,:-self.nBaud+1]
638 ndatadec = self.__nHeis - self.nBaud + 1
639
636
640 if self.__profIndex == self.nCode-1:
637 print "OptFreq ", time.time() - ini
641 self.__profIndex = 0
642 return ndatadec, datadec
643
644 self.__profIndex += 1
645
638
646 return ndatadec, datadec
639 return datadec
647
640
648 def convolutionInTime(self, data):
641 def convolutionInTime(self, data):
649
642
650 self.__nChannels, self.__nHeis = data.shape
643 ini = time.time()
651 self.__codeBuffer = self.code[self.__profIndex]
652 ndatadec = self.__nHeis - self.nBaud + 1
653
654 datadec = numpy.zeros((self.__nChannels, ndatadec))
655
644
656 for i in range(self.__nChannels):
645 code = self.code[self.__profIndex].reshape(1,-1)
657 datadec[i,:] = numpy.correlate(data[i,:], self.__codeBuffer)
658
646
659 if self.__profIndex == self.nCode-1:
647 for i in range(__nChannels):
660 self.__profIndex = 0
648 self.datadecTime[i,:] = numpy.correlate(data[i,:], code, mode='valid')
661 return ndatadec, datadec
662
649
663 self.__profIndex += 1
650 print "Time ", time.time() - ini
664
651
665 return ndatadec, datadec
652 return self.datadecTime
666
653
667 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0):
654 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0):
668 ini = time.time()
655 ini = time.time()
@@ -691,7 +678,9 class Decoder(Operation):
691
678
692 if mode == 2:
679 if mode == 2:
693 ndatadec, datadec = self.convolutionInFreqOpt(dataOut.data)
680 ndatadec, datadec = self.convolutionInFreqOpt(dataOut.data)
694
681
682
683
695 dataOut.data = datadec
684 dataOut.data = datadec
696
685
697 dataOut.heightList = dataOut.heightList[0:ndatadec]
686 dataOut.heightList = dataOut.heightList[0:ndatadec]
@@ -699,8 +688,17 class Decoder(Operation):
699 dataOut.flagDecodeData = True #asumo q la data no esta decodificada
688 dataOut.flagDecodeData = True #asumo q la data no esta decodificada
700
689
701 print time.time() - ini, "prof = %d, nCode=%d" %(self.__profIndex, self.nCode)
690 print time.time() - ini, "prof = %d, nCode=%d" %(self.__profIndex, self.nCode)
702 # dataOut.flagDeflipData = True #asumo q la data no esta sin flip
691
692 if self.__profIndex == self.nCode-1:
693 self.__profIndex = 0
694 return 1
695
696 self.__profIndex += 1
703
697
698 return 1
699 # dataOut.flagDeflipData = True #asumo q la data no esta sin flip
700
701
704
702
705 class SpectraProc(ProcessingUnit):
703 class SpectraProc(ProcessingUnit):
706
704
General Comments 0
You need to be logged in to leave comments. Login now