def search(x,prn): fs = 8192000.0 n = 8192 # 1 ms coherent integration incr = float(b1i.code_length)/n c = b1i.code(prn,0,0,incr,n) # obtain samples of the B1I code c = fft.fft(np.concatenate((c,np.zeros(n)))) m_metric,m_code,m_doppler = 0,0,0 for doppler in np.arange(-5000,5000,200): # doppler bins q = np.zeros(2*n) w = nco.nco(-doppler/fs,0,2*n) for block in range(80): # 20 incoherent sums b = x[(block*n):((block+2)*n)] b = b*w r = fft.ifft(c*np.conj(fft.fft(b))) q = q + np.absolute(r) idx = np.argmax(q) if q[idx]>m_metric: m_metric = q[idx] m_code = b1i.code_length*(float(idx)/n) m_doppler = doppler m_code = m_code%b1i.code_length return m_metric,m_code,m_doppler
def search(x, prn): fs = 8192000.0 n = 8192 # 1 ms coherent integration incr = float(b1i.code_length) / n c = b1i.code(prn, 0, 0, incr, n) # obtain samples of the B1I code c = fft.fft(np.concatenate((c, np.zeros(n)))) m_metric, m_code, m_doppler = 0, 0, 0 for doppler in np.arange(-7000, 7000, 200): # doppler bins q = np.zeros(2 * n) w = nco.nco(-doppler / fs, 0, 2 * n) for block in range(80): # 20 incoherent sums b = x[(block * n):((block + 2) * n)] b = b * w r = fft.ifft(c * np.conj(fft.fft(b))) q = q + np.absolute(r) idx = np.argmax(q) if q[idx] > m_metric: m_metric = q[idx] m_code = b1i.code_length * (float(idx) / n) m_doppler = doppler m_code = m_code % b1i.code_length return m_metric, m_code, m_doppler