I am calculating a time partitioned Cross Ambiguity Function (CAF) by adding the surfaces of different time-sectioned CAFs together. Meaning, I calculate a CAF using 10 seconds of IQ data, calculate a second CAF using another 10 seconds of IQ data, square the values and add the signals together.

If I have a single CAF surface, I identify a peak by applying an SNR threshold of 18dB to the surface. 18dB is a rule of thumb saying that we are 99% (or some high value) sure the peak is a signal peak instead of a noise peak.

The noise on the CAF surface is a Chi-Squared distribution with 2 degrees of freedom. I am assuming the second CAF's noise is uncorrelated with the first CAF's noise. The noise floor variance and the CAF peak's variance will decrease as I add surfaces together. The below illustrates my thought process so far.

How much can I decrease the threshold value I am using for 1 surface when I add N surfaces together and still maintain my probability of False Alarm? Is it simply a matter of experimenting with different threshold values?

from scipy.stats import chi2
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import style

num_integrations = np.arange(1, 4)
threshold = 18  # dB
un_db = 10**(threshold/20)

deg_of_freedom = 2

num_values = int(1e7)

output = np.zeros((1, num_values))
prob_above_thresh = []
non_noise_prob = []
for index in num_integrations:
    print('Integrations:', index)
    values = chi2.rvs(deg_of_freedom, size=num_values)
    output = output + values

    mean = np.average(output)
    above_thresh = (np.asarray(output/mean) > un_db).sum()

    non_noise_prob.append((1 - prob_above_thresh[-1])*100)
    print('Probability non-noise peak =', non_noise_prob[-1], '%')

# make plot
fig, ax = plt.subplots(1, 1)
plt.title('Probability non-noise peak')
plt.plot(num_integrations, non_noise_prob)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.