Ejemplo n.º 1
0
def LS_Filter_Multiple(refChannel,
                       srvChannel,
                       filterLen,
                       sampleRate,
                       dopplerBins=[0]):
    '''Clutter removal with least squares filter. This function allows the least
    squares filter to be applied over several frequency bins. Useful when there
    is significant clutter at nonzero doppler values.

    Parameters:
        refChannel:     Array containing the reference channel signal
        srvChannel:     Array containing the surveillance channel signal
        filterLen:      Length of the least squares filter (in samples)
        dopplerBins:    List of doppler bins to filter (default only 0Hz)

    Returns:
        srvChannelFiltered: Surveillance channel signal with clutter removed
    '''

    srvChannelFiltered = srvChannel
    for doppler in dopplerBins:
        if doppler == 0:
            srvChannelFiltered = LS_Filter_Toeplitz(refChannel,
                                                    srvChannelFiltered,
                                                    filterLen)
        else:
            refMod = frequency_shift(refChannel, doppler, sampleRate)
            srvChannelFiltered = LS_Filter_Toeplitz(refMod, srvChannelFiltered,
                                                    filterLen)
    return srvChannelFiltered
Ejemplo n.º 2
0
def clutter_removal(s1, s2, nlag, Fs, dbins=[0]):
    '''clutter removal with least squares filter

    Parameters:
    s1: reference signal
    s2: surveillance signal
    nlag: length of least squares filter
    Fs: input signal sample frequency
    dbins: list of doppler bins to do filtering on (default 0)
    
    returns: y (surveillance signal with static echoes removed)'''
    y = s2
    for ds in dbins:
        if ds == 0:
            y = LS_Filter(s1, y, nlag, 1)
        else:
            s1s = frequency_shift(s1, ds, Fs)
            y = LS_Filter(s1s, y, nlag, 1)
    return y
Ejemplo n.º 3
0
def channel_preprocessing(sig, dec, fc, Fs):
    '''deinterleave IQ samples, tune to channel frequency and decimate'''
    IQ = deinterleave_IQ(sig)
    IQ_tuned = frequency_shift(IQ, fc, Fs)
    IQd = decimate(IQ_tuned, dec)
    return IQd