Example #1
0
    def processData(self):

        if VERBOSE:
            print 'Start processing image...'

        if self.multiFile:
            self.s = System(self.dataTag + ' %d' % (self.image_idx.value + 1))
            self.Xd_i = self.s.data.Xd
        else:
            self.Xd_i = self.Xd[self.image_idx.value, :, :, :].copy()

        self.Xd_i = self.Xd_i[self.sliceAngleStart.value:self.sliceAngleEnd.
                              value:self.sliceAngleStep.value,
                              self.sliceRangeStart.value:self.sliceRangeEnd.
                              value:self.sliceRangeStep.value,
                              self.sliceElementStart.value:self.sliceElementEnd
                              .value:self.sliceElementStep.value]
        self.Nx = self.Xd_i.shape[0]  # No. beams
        self.Ny = self.Xd_i.shape[1]  # No. range samples
        self.Nm = self.Xd_i.shape[2]  # No. channels

        self.angles = self.s.data.angles.squeeze()
        self.angles = self.angles[self.sliceAngleStart.value:self.sliceAngleEnd
                                  .value:self.sliceAngleStep.value]
        self.ranges = self.s.data.ranges.squeeze()
        self.ranges = self.ranges[self.sliceRangeStart.value:self.sliceRangeEnd
                                  .value:self.sliceRangeStep.value]

        # Make delay and sum image
        if self.apod.value is 1:
            self.das_w = np.hamming(self.Nm)
            self.das_w_sub = np.hamming(self.L.value)
        else:
            self.das_w = np.ones(self.Nm)
            self.das_w_sub = np.ones(self.L.value)

        self.img_das = np.dot(self.Xd_i, self.das_w) / self.Nm
        if self.K.value > 0:
            self.img_das = self.img_das[:, self.K.value:-self.K.
                                        value]  # truncate to get equal dim on das and capon image

        # init sub/beam-space matrix
        if self.Nb.value > 0:
            self.B = np.ones((self.Nb.value, self.L.value))
        else:
            self.B = np.array([0])

        # Make capon image
        res_gpu = getCaponCUDA.getCaponCUDAPy(self.Xd_i, 10.0**self.d.value,
                                              self.L.value, self.K.value,
                                              self.B, False, False)
        self.img_capon = res_gpu[0]
        self.capon_weights = res_gpu[2]
        #self.img_capon = self.img_das

        if VERBOSE:
            print 'getCaponCUDA return code: ', res_gpu[3]
            print 'done.'
Example #2
0
   def processData(self):
   
      if VERBOSE:
         print 'Start processing image...'
   
      if self.multiFile:
         self.s = System(self.dataTag + ' %d'%(self.image_idx.value+1))
         self.Xd_i = self.s.data.Xd
      else:
         self.Xd_i = self.Xd[self.image_idx.value, :, :, :].copy()
         
      self.Xd_i = self.Xd_i[self.sliceAngleStart.value:self.sliceAngleEnd.value:self.sliceAngleStep.value, 
                            self.sliceRangeStart.value:self.sliceRangeEnd.value:self.sliceRangeStep.value, 
                            self.sliceElementStart.value:self.sliceElementEnd.value:self.sliceElementStep.value];
      self.Nx = self.Xd_i.shape[0]     # No. beams
      self.Ny = self.Xd_i.shape[1]     # No. range samples
      self.Nm = self.Xd_i.shape[2]     # No. channels
      
      self.angles = self.s.data.angles.squeeze()
      self.angles = self.angles[self.sliceAngleStart.value:self.sliceAngleEnd.value:self.sliceAngleStep.value]
      self.ranges = self.s.data.ranges.squeeze()
      self.ranges = self.ranges[self.sliceRangeStart.value:self.sliceRangeEnd.value:self.sliceRangeStep.value]
   
      # Make delay and sum image
      if self.apod.value is 1:
         self.das_w = np.hamming(self.Nm)
         self.das_w_sub = np.hamming(self.L.value)
      else:
         self.das_w = np.ones(self.Nm)
         self.das_w_sub = np.ones(self.L.value)
      
      self.img_das = np.dot(self.Xd_i, self.das_w) / self.Nm
      if self.K.value > 0:
         self.img_das = self.img_das[:,self.K.value:-self.K.value]# truncate to get equal dim on das and capon image
         
      # init sub/beam-space matrix
      if self.Nb.value > 0:
         self.B = np.ones((self.Nb.value, self.L.value))
      else:
         self.B = np.array([0])

      # Make capon image
      res_gpu = getCaponCUDA.getCaponCUDAPy(self.Xd_i, 10.0**self.d.value, self.L.value, self.K.value, self.B, False, False)
      self.img_capon = res_gpu[0]
      self.capon_weights = res_gpu[2]
      #self.img_capon = self.img_das
      
      if VERBOSE:
         print 'getCaponCUDA return code: ', res_gpu[3]
         print 'done.'
Example #3
0
def testMVDRKernelPerformance(M=32,L=16,K=0):
#   c = 12345*6789
#   print 'The result of 12345 x 6789 :', c
#   return c
   
   import framework.beamformer.capon.getCaponCUDA as getCaponCUDA
#   import scipy.interpolate as interpolate
   
   s = System('Holmengraa')
   
   r = [3000,9000]
   
   #Ny, Nx, M = s.data.Xd.shape
   
  
   Xd = s.data.Xd[r[0]:r[1],:,0:M]
   Nt = s.data.Nt[r[0]:r[1]]
   
   ext=(0,62.76,Nt.max(),Nt.min())
      
   fs = s.data.fs

   Ny, Nx, M = Xd.shape
   
   das = Xd.sum(2)
 
   d = 0.01
#   L = 16
#   K = 0
   V = np.array([])

#   from time import sleep
#   sleep(7)

   Xd = Xd[:500,:100].copy()
   
   print "  Running getCaponCUDA.getCaponCUDAPy(Xd[100x10xM=%d], d, L=%d, K, V, False, False)"%(M,L) 
   mvdr1 = getCaponCUDA.getCaponCUDAPy(Xd, d, L, K, V, False, False)