Exemple #1
0
def scenario():
    """
    This method is not a class member, it defines a sample scenario.
    Defines a sample scenario for testing
    
    Returns
    -------

        CRB : float

    Examples
    --------
    .. plot::
        :include-source:

        >>> nRN = 4
        >>> dim = 3 # 2 for 2D, 3 for 3D
        >>> L = 20.
        >>> c = 0.3
        >>> BN = L*sp.rand(dim,1)
        >>> BN0 = L*sp.rand(dim,1)
        >>> RN_TOA = L*sp.rand(dim,nRN)
        >>> RN_RSS = L*sp.rand(dim,nRN)
        >>> RN_TDOA = L*sp.rand(dim,nRN)

        >>> d_TOA = dist(RN_TOA,BN,0) # actual distances
        >>> TOF = d_TOA/c # actual TOA
        >>> TOA_std = 0.001/c*np.ones(np.shape(TOF))
        >>> TOA = TOF + TOA_std

        >>> rss_std = 0.001 * np.ones(nRN)
        >>> rss_np = 2.645 * np.ones(nRN)
        >>> pl0 = 34.7*np.ones(nRN)
        >>> d0 = 1.
        >>> d_RSS = dist(RN_RSS,BN,0) # actual distances
        >>> X = rss_std * np.random.randn(np.shape(pl0)[0])
        >>> rss_db = pl0-10*rss_np*np.log10(d_RSS/d0)+X

        >>> RNr_TDOA = np.zeros((dim,nRN))#L*sp.rand(dim,nRN)
        >>> d = dist(RN_TDOA,BN,0)
        >>> dr = dist(RNr_TDOA,BN,0)
        >>> TDOF = (d-dr)/c # actual TDOA
        >>> TDOA_std = 0.001/c*np.ones(np.shape(TDOF))
        >>> TDOA = TDOF + TDOA_std

        >>> nodes={}
        >>> nodes['BN']= BN
        >>> nodes['RN_RSS']= RN_RSS
        >>> nodes['RN_TOA']= RN_TOA
        >>> nodes['RN_TDOA']= RN_TDOA
        >>> nodes['RNr_TDOA']= RNr_TDOA

        >>> ldp={}
        >>> ldp['RSS'] = rss_db
        >>> ldp['RSS_std'] = rss_std
        >>> ldp['RSS_np'] = rss_np
        >>> ldp['d0'] = d0
        >>> ldp['PL0'] = pl0
        >>> ldp['TOA'] = TOA
        >>> ldp['TOA_std'] = TOA_std
        >>> ldp['TDOA'] = TDOA
        >>> ldp['TDOA_std'] = TDOA_std

        >>> print 'Nodes'
        >>> print nodes
        >>> print 'LDPs'
        >>> print ldp
        >>> print 'BN0:initial guess for ML estimator'
        >>> print BN0
        """
    nrn = 4
    dim = 3  # 2 for 2D, 3 for 3D
    L = 20.
    c = 0.3
    bn = L * sp.rand(dim, 1)
    bn0 = L * sp.rand(dim, 1)
    rn_toa = L * sp.rand(dim, nrn)
    rn_rss = L * sp.rand(dim, nrn)
    rn_tdoa = L * sp.rand(dim, nrn)

    d_toa = dist(rn_toa, bn, 0)  # actual distances
    tof = d_toa / c  # actual TOA
    toa_std = 0.001 / c * np.ones(np.shape(tof))
    toa_ns = tof + toa_std

    rss_std = 0.001 * np.ones(nrn)
    rss_np = 2.645 * np.ones(nrn)
    pl0 = 34.7 * np.ones(nrn)
    d0 = 1.
    d_rss = dist(rn_rss, bn, 0)  # actual distances
    x = rss_std * np.random.randn(np.shape(pl0)[0])
    rss_db = pl0 - 10 * rss_np * np.log10(d_rss / d0) + x

    rnr_tdoa = np.zeros((dim, nrn))  # L*sp.rand(dim,nRN)
    d = dist(rn_tdoa, bn, 0)
    dr = dist(rnr_tdoa, bn, 0)
    tdof = (d - dr) / c  # actual TDOA
    tdoa_std = 0.001 / c * np.ones(np.shape(tdof))
    tdoa_ns = tdof + tdoa_std
    
    nodes = {}
    nodes['BN'] = bn
    nodes['RN_RSS'] = rn_rss
    nodes['RN_TOA'] = rn_toa
    nodes['RN_TDOA'] = rn_tdoa
    nodes['RNr_TDOA'] = rnr_tdoa

    ldp = {}
    ldp['RSS'] = rss_db
    ldp['RSS_std'] = rss_std
    ldp['RSS_np'] = rss_np
    ldp['d0'] = d0
    ldp['PL0'] = pl0
    ldp['TOA'] = toa_ns
    ldp['TOA_std'] = toa_std
    ldp['TDOA'] = tdoa_ns
    ldp['TDOA_std'] = tdoa_std

    return nodes, ldp, bn0
Exemple #2
0
def scenario():
    """
    This method is not a class member, it defines a sample scenario.
    Defines a sample scenario for testing
    
    Returns
    -------

        CRB : float

    Examples
    --------
    .. plot::
        :include-source:

        >>> nRN = 4
        >>> dim = 3 # 2 for 2D, 3 for 3D
        >>> L = 20.
        >>> c = 0.3
        >>> BN = L*sp.rand(dim,1)
        >>> BN0 = L*sp.rand(dim,1)
        >>> RN_TOA = L*sp.rand(dim,nRN)
        >>> RN_RSS = L*sp.rand(dim,nRN)
        >>> RN_TDOA = L*sp.rand(dim,nRN)

        >>> d_TOA = dist(RN_TOA,BN,0) # actual distances
        >>> TOF = d_TOA/c # actual TOA
        >>> TOA_std = 0.001/c*np.ones(np.shape(TOF))
        >>> TOA = TOF + TOA_std

        >>> rss_std = 0.001 * np.ones(nRN)
        >>> rss_np = 2.645 * np.ones(nRN)
        >>> pl0 = 34.7*np.ones(nRN)
        >>> d0 = 1.
        >>> d_RSS = dist(RN_RSS,BN,0) # actual distances
        >>> X = rss_std * np.random.randn(np.shape(pl0)[0])
        >>> rss_db = pl0-10*rss_np*np.log10(d_RSS/d0)+X

        >>> RNr_TDOA = np.zeros((dim,nRN))#L*sp.rand(dim,nRN)
        >>> d = dist(RN_TDOA,BN,0)
        >>> dr = dist(RNr_TDOA,BN,0)
        >>> TDOF = (d-dr)/c # actual TDOA
        >>> TDOA_std = 0.001/c*np.ones(np.shape(TDOF))
        >>> TDOA = TDOF + TDOA_std

        >>> nodes={}
        >>> nodes['BN']= BN
        >>> nodes['RN_RSS']= RN_RSS
        >>> nodes['RN_TOA']= RN_TOA
        >>> nodes['RN_TDOA']= RN_TDOA
        >>> nodes['RNr_TDOA']= RNr_TDOA

        >>> ldp={}
        >>> ldp['RSS'] = rss_db
        >>> ldp['RSS_std'] = rss_std
        >>> ldp['RSS_np'] = rss_np
        >>> ldp['d0'] = d0
        >>> ldp['PL0'] = pl0
        >>> ldp['TOA'] = TOA
        >>> ldp['TOA_std'] = TOA_std
        >>> ldp['TDOA'] = TDOA
        >>> ldp['TDOA_std'] = TDOA_std

        >>> print 'Nodes'
        >>> print nodes
        >>> print 'LDPs'
        >>> print ldp
        >>> print 'BN0:initial guess for ML estimator'
        >>> print BN0
        """
    nrn = 4
    dim = 3  # 2 for 2D, 3 for 3D
    L = 20.
    c = 0.3
    bn = L * sp.rand(dim, 1)
    bn0 = L * sp.rand(dim, 1)
    rn_toa = L * sp.rand(dim, nrn)
    rn_rss = L * sp.rand(dim, nrn)
    rn_tdoa = L * sp.rand(dim, nrn)

    d_toa = dist(rn_toa, bn, 0)  # actual distances
    tof = d_toa / c  # actual TOA
    toa_std = 0.001 / c * np.ones(np.shape(tof))
    toa_ns = tof + toa_std

    rss_std = 0.001 * np.ones(nrn)
    rss_np = 2.645 * np.ones(nrn)
    pl0 = 34.7 * np.ones(nrn)
    d0 = 1.
    d_rss = dist(rn_rss, bn, 0)  # actual distances
    x = rss_std * np.random.randn(np.shape(pl0)[0])
    rss_db = pl0 - 10 * rss_np * np.log10(d_rss / d0) + x

    rnr_tdoa = np.zeros((dim, nrn))  # L*sp.rand(dim,nRN)
    d = dist(rn_tdoa, bn, 0)
    dr = dist(rnr_tdoa, bn, 0)
    tdof = (d - dr) / c  # actual TDOA
    tdoa_std = 0.001 / c * np.ones(np.shape(tdof))
    tdoa_ns = tdof + tdoa_std

    nodes = {}
    nodes['BN'] = bn
    nodes['RN_RSS'] = rn_rss
    nodes['RN_TOA'] = rn_toa
    nodes['RN_TDOA'] = rn_tdoa
    nodes['RNr_TDOA'] = rnr_tdoa

    ldp = {}
    ldp['RSS'] = rss_db
    ldp['RSS_std'] = rss_std
    ldp['RSS_np'] = rss_np
    ldp['d0'] = d0
    ldp['PL0'] = pl0
    ldp['TOA'] = toa_ns
    ldp['TOA_std'] = toa_std
    ldp['TDOA'] = tdoa_ns
    ldp['TDOA_std'] = tdoa_std

    return nodes, ldp, bn0
Exemple #3
0
def scenario():
    """ Defines a sample scenario for testing

    Returns
    -------

        CRB : float

    Examples
    --------
    .. plot::
        :include-source:

        >>> nRN = 4
        >>> dim = 3 # 2 for 2D, 3 for 3D
        >>> L = 20.
        >>> c = 0.3
        >>> BN = L*sp.rand(dim,1)
        >>> BN0 = L*sp.rand(dim,1)
        >>> RN_TOA = L*sp.rand(dim,nRN)
        >>> RN_RSS = L*sp.rand(dim,nRN)
        >>> RN_TDOA = L*sp.rand(dim,nRN)

        >>> d_TOA = dist(RN_TOA,BN,0) # actual distances
        >>> TOF = d_TOA/c # actual TOA
        >>> TOA_std = 0.001/c*np.ones(np.shape(TOF))
        >>> TOA = TOF + TOA_std

        >>> RSS_std = 0.001 * np.ones(nRN)
        >>> RSS_np = 2.645 * np.ones(nRN)
        >>> PL0 = 34.7*np.ones(nRN)
        >>> d0 = 1.
        >>> d_RSS = dist(RN_RSS,BN,0) # actual distances
        >>> X = RSS_std * np.random.randn(np.shape(PL0)[0])
        >>> RSS = PL0-10*RSS_np*np.log10(d_RSS/d0)+X

        >>> RNr_TDOA = np.zeros((dim,nRN))#L*sp.rand(dim,nRN)
        >>> d = dist(RN_TDOA,BN,0)
        >>> dr = dist(RNr_TDOA,BN,0)
        >>> TDOF = (d-dr)/c # actual TDOA
        >>> TDOA_std = 0.001/c*np.ones(np.shape(TDOF))
        >>> TDOA = TDOF + TDOA_std

        >>> nodes={}
        >>> nodes['BN']= BN
        >>> nodes['RN_RSS']= RN_RSS
        >>> nodes['RN_TOA']= RN_TOA
        >>> nodes['RN_TDOA']= RN_TDOA
        >>> nodes['RNr_TDOA']= RNr_TDOA

        >>> ldp={}
        >>> ldp['RSS'] = RSS
        >>> ldp['RSS_std'] = RSS_std
        >>> ldp['RSS_np'] = RSS_np
        >>> ldp['d0'] = d0
        >>> ldp['PL0'] = PL0
        >>> ldp['TOA'] = TOA
        >>> ldp['TOA_std'] = TOA_std
        >>> ldp['TDOA'] = TDOA
        >>> ldp['TDOA_std'] = TDOA_std

        >>> print 'Nodes'
        >>> print nodes
        >>> print 'LDPs'
        >>> print ldp
        >>> print 'BN0:initial guess for ML estimator'
        >>> print BN0
        """
    nRN = 4
    dim = 3  # 2 for 2D, 3 for 3D
    L = 20.
    c = 0.3
    BN = L * sp.rand(dim, 1)
    BN0 = L * sp.rand(dim, 1)
    RN_TOA = L * sp.rand(dim, nRN)
    RN_RSS = L * sp.rand(dim, nRN)
    RN_TDOA = L * sp.rand(dim, nRN)

    d_TOA = dist(RN_TOA, BN, 0)  # actual distances
    TOF = d_TOA / c  # actual TOA
    TOA_std = 0.001 / c * np.ones(np.shape(TOF))
    TOA = TOF + TOA_std

    RSS_std = 0.001 * np.ones(nRN)
    RSS_np = 2.645 * np.ones(nRN)
    PL0 = 34.7 * np.ones(nRN)
    d0 = 1.
    d_RSS = dist(RN_RSS, BN, 0)  # actual distances
    X = RSS_std * np.random.randn(np.shape(PL0)[0])
    RSS = PL0 - 10 * RSS_np * np.log10(d_RSS / d0) + X

    RNr_TDOA = np.zeros((dim, nRN))  # L*sp.rand(dim,nRN)
    d = dist(RN_TDOA, BN, 0)
    dr = dist(RNr_TDOA, BN, 0)
    TDOF = (d - dr) / c  # actual TDOA
    TDOA_std = 0.001 / c * np.ones(np.shape(TDOF))
    TDOA = TDOF + TDOA_std

    nodes = {}
    nodes['BN'] = BN
    nodes['RN_RSS'] = RN_RSS
    nodes['RN_TOA'] = RN_TOA
    nodes['RN_TDOA'] = RN_TDOA
    nodes['RNr_TDOA'] = RNr_TDOA

    ldp = {}
    ldp['RSS'] = RSS
    ldp['RSS_std'] = RSS_std
    ldp['RSS_np'] = RSS_np
    ldp['d0'] = d0
    ldp['PL0'] = PL0
    ldp['TOA'] = TOA
    ldp['TOA_std'] = TOA_std
    ldp['TDOA'] = TDOA
    ldp['TDOA_std'] = TDOA_std

    return nodes, ldp, BN0