def irregular_sampling(T, N, rseed=None):
    """
    Generates an irregularly sampled time vector by perturbating a 
    linearly spaced vector and latter deleting a certain number of 
    points
    
    Parameters
    ----------
    T: float
        Time span of the vector, i.e. how long it is in time
    N: positive integer
        Number of samples of the resulting time vector
    rseed: 
        Random seed to feed the random number generator
        
    Returns
    -------
    t_irr: ndarray
        An irregulary sampled time vector
        
    """
    sampling_period = (T/float(N))
    N = int(N)
    np.random.seed(rseed)    
    t = np.linspace(0, T, num=5*N)
    # First we add jitter
    t[1:-1] += sampling_period*0.5*np.random.randn(5*N-2)
    # Then we do a random permutation and keep only N points 
    P = np.random.permutation(5*N)
    t_irr = np.sort(t[P[:N]])
    return t_irr
Generates an irregularly sampled time vector by perturbating a 
    linearly spaced vector and latter deleting a certain number of 
    points
    
    Parameters
    ----------
    T: float
        Time span of the vector, i.e. how long it is in time
    N: positive integer
        Number of samples of the resulting time vector
    rseed: 
        Random seed to feed the random number generator
        
    Returns
    -------
    t_irr: ndarray
        An irregulary sampled time vector