0053975c1b779ddeb72e76ef5e099eab8bde08b3,acoular/tbeamform.py,BeamformerCleantSq,result,#BeamformerCleantSq#,814

Before Change


        // initialize values
        numMics = self.steer.mics.num_mics
        m_index = arange(numMics, dtype=int)
        n_index = arange(0,num)[:,newaxis]
        c = self.steer.env.c/self.source.sample_freq
        delays = self.rm/c
        d_index = array(delays, dtype=int) // integer index
        d_interp2 = delays % 1 // 2nd coeff for lin interpolation between samples
        d_interp1 = 1-d_interp2 // 1st coeff for lin interpolation 
        w = self._get_weights()
        amp = (w/(self.rm*self.rm)).sum(1) * self.r0
        amp = 1.0/(amp[:, newaxis]*self.rm) // multiplication factor
        temp = empty((self.grid.size, self.source.numchannels), dtype=float)
        d_interp1 *= amp // premultiplication, to save later ops
        d_interp2 *= amp
        maxdelay = int((self.rm/c).max())+2 + num // +2 because interpolation
        initialNumberOfBlocks = int(ceil(maxdelay/num))
        bufferSize=initialNumberOfBlocks*num
        self.buffer = zeros((bufferSize,numMics), dtype=float)
        self.bufferIndex = bufferSize // indexing current time sample in buffer 
        fill_buffer_generator = self._fill_buffer(num)
        for _ in range(initialNumberOfBlocks):
            next(fill_buffer_generator)

        // start processing
        flag = True
        while flag:
            samplesleft = self.buffer.shape[0]-self.bufferIndex
            if samplesleft-maxdelay <= 0:
                num += samplesleft-maxdelay
                maxdelay += samplesleft-maxdelay
                n_index = arange(0,num)[:,newaxis]
                flag=False
            // init step
            p_res = array(
                self.buffer[self.bufferIndex:self.bufferIndex+maxdelay,:])
            Phi, autopow = self.delay_and_sum(
                num,p_res,d_interp1,d_interp2,d_index,m_index,temp)
            Gamma = zeros(Phi.shape)
            Gamma_autopow = zeros(Phi.shape)
            J = 0
            // deconvolution 
            while (J < self.n_iter):
                // print(f"start clean iteration {J+1} of max {self.n_iter}")
                if self.r_diag:
                    powPhi = clip((Phi[:num]**2-autopow).sum(0),1e-100,1e+100)
                else:
                    powPhi = (Phi[:num]**2).sum(0)
                imax = argmax(powPhi)
                t_float = delays[imax,m_index]+n_index
                t_ind = t_float.astype(int)
                for m in range(numMics): 
                    p_res[t_ind[:num,m],m] -= self.damp*interp(t_ind[:num,m],
                                                               t_float[:num,m],

After Change


        // initialize values
        numMics = self.steer.mics.num_mics
        m_index = arange(numMics, dtype=int)
        n_index = arange(0,num+1)[:,newaxis]
        c = self.steer.env.c/self.source.sample_freq
        delays = self.rm/c
        d_index = array(delays, dtype=int) // integer index
        d_interp2 = delays % 1 // 2nd coeff for lin interpolation between samples
        d_interp1 = 1-d_interp2 // 1st coeff for lin interpolation 
        w = self._get_weights()
        amp = (w/(self.rm*self.rm)).sum(1) * self.r0
        amp = 1.0/(amp[:, newaxis]*self.rm) // multiplication factor
        temp = empty((self.grid.size, self.source.numchannels), dtype=float)
        d_interp1 *= amp // premultiplication, to save later ops
        d_interp2 *= amp
        maxdelay = int((self.rm/c).max())+2 + num // +2 because interpolation
        initialNumberOfBlocks = int(ceil(maxdelay/num))
        bufferSize=initialNumberOfBlocks*num
        self.buffer = zeros((bufferSize,numMics), dtype=float)
        self.bufferIndex = bufferSize // indexing current time sample in buffer 
        fill_buffer_generator = self._fill_buffer(num)
        for _ in range(initialNumberOfBlocks):
            next(fill_buffer_generator)

        // start processing
        flag = True
        while flag:
            samplesleft = self.buffer.shape[0]-self.bufferIndex
            if samplesleft-maxdelay <= 0:
                num += samplesleft-maxdelay
                maxdelay += samplesleft-maxdelay
                n_index = arange(0,num+1)[:,newaxis]
                flag=False
            // init step
            p_res = array(
                self.buffer[self.bufferIndex:self.bufferIndex+maxdelay,:])
            Phi, autopow = self.delay_and_sum(
                num,p_res,d_interp1,d_interp2,d_index,m_index,temp)
            Gamma = zeros(Phi.shape)
            Gamma_autopow = zeros(Phi.shape)
            J = 0
            // deconvolution 
            while (J < self.n_iter):
                // print(f"start clean iteration {J+1} of max {self.n_iter}")
                if self.r_diag:
                    powPhi = clip((Phi[:num]**2-autopow).sum(0),1e-100,1e+100)
                else:
                    powPhi = (Phi[:num]**2).sum(0)
                imax = argmax(powPhi)
                t_float = delays[imax,m_index]+n_index
                t_ind = t_float.astype(int)
                for m in range(numMics): 
                    p_res[t_ind[:num+1,m],m] -= self.damp*interp(t_ind[:num+1,m],
                                                               t_float[:num,m],
Italian Trulli
In pattern: SUPERPATTERN

Frequency: 4

Non-data size: 6

Instances


Project Name: acoular/acoular
Commit Name: 0053975c1b779ddeb72e76ef5e099eab8bde08b3
Time: 2020-04-01
Author: kujawski.ad@gmail.com
File Name: acoular/tbeamform.py
Class Name: BeamformerCleantSq
Method Name: result


Project Name: acoular/acoular
Commit Name: 0053975c1b779ddeb72e76ef5e099eab8bde08b3
Time: 2020-04-01
Author: kujawski.ad@gmail.com
File Name: acoular/tbeamform.py
Class Name: BeamformerCleant
Method Name: result