def test_Helper_sineDoppler(): ''' Helper method test ''' doppler = sineDoppler(1000., 77., 1e9, 100., 50., 3.) assert isinstance(doppler, DopplerSine) assert isinstance(doppler, DopplerBase) assert doppler.distance0_m == 1000. assert doppler.tec_epm2 == 77. assert doppler.period_s == 3. assert numpy.abs(doppler.speed0_mps - -scipy.constants.c / 1e7) < EPSILON assert numpy.abs(doppler.amplutude_mps - -scipy.constants.c / 2e7) < EPSILON
def doUpdate(self, sv, parser, namespace, values, option_string): if isinstance(sv, GPSSatellite): if sv.l1caEnabled: signal = signals.GPS.L1CA elif sv.l2cEnabled: signal = signals.GPS.L2C else: raise ValueError("Signal band must be specified before doppler") elif isinstance(sv, GLOSatellite): if sv.isL1Enabled(): frequency_hz = signals.GLONASS.L1S[sv.prn].CENTER_FREQUENCY_HZ elif sv.isL2Enabled(): frequency_hz = signals.GLONASS.L2S[sv.prn].CENTER_FREQUENCY_HZ else: raise ValueError("Signal band must be specified before doppler") else: raise ValueError("Signal band must be specified before doppler") frequency_hz = signal.CENTER_FREQUENCY_HZ # Select distance: either from a distance parameter or from delays if namespace.symbol_delay is not None or namespace.chip_delay is not None: distance = computeDistanceDelay(namespace.symbol_delay, namespace.chip_delay, signal) else: distance = namespace.distance if namespace.distance is not None else 0. if namespace.doppler_type == "zero": doppler = zeroDoppler(distance, namespace.tec, frequency_hz) elif namespace.doppler_type == "const": doppler = constDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value) elif namespace.doppler_type == "linear": doppler = linearDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_speed) elif namespace.doppler_type == "sine": doppler = sineDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_amplitude, namespace.doppler_period) else: raise ValueError("Unsupported doppler type") sv.doppler = doppler
def doUpdate(self, sv, parser, namespace, values, option_string): if isinstance(sv, GPSSatellite): if sv.l1caEnabled: signal = signals.GPS.L1CA elif sv.l2cEnabled: signal = signals.GPS.L2C else: raise ValueError( "Signal band must be specified before doppler") elif isinstance(sv, GLOSatellite): if sv.isL1Enabled(): frequency_hz = signals.GLONASS.L1S[ sv.prn].CENTER_FREQUENCY_HZ elif sv.isL2Enabled(): frequency_hz = signals.GLONASS.L2S[ sv.prn].CENTER_FREQUENCY_HZ else: raise ValueError( "Signal band must be specified before doppler") else: raise ValueError( "Signal band must be specified before doppler") frequency_hz = signal.CENTER_FREQUENCY_HZ # Select distance: either from a distance parameter or from delays if namespace.symbol_delay is not None or namespace.chip_delay is not None: distance = computeDistanceDelay(namespace.symbol_delay, namespace.chip_delay, signal) else: distance = namespace.distance if namespace.distance is not None else 0. if namespace.doppler_type == "zero": doppler = zeroDoppler(distance, namespace.tec, frequency_hz) elif namespace.doppler_type == "const": doppler = constDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value) elif namespace.doppler_type == "linear": doppler = linearDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_speed) elif namespace.doppler_type == "sine": doppler = sineDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_amplitude, namespace.doppler_period) else: raise ValueError("Unsupported doppler type") sv.doppler = doppler
def test_DopplerSine_computeDopplerShiftHz(): ''' Test distance for sine doppler ''' doppler = sineDoppler(1000., # Distance 45., # TEC GPS.L1CA.CENTER_FREQUENCY_HZ, # F 100., # Offset Hz 50., # Amplitude Hz 4.) # Period s userTimeAll_s = numpy.asarray([0., 1., 2., 3.]) shift = doppler.computeDopplerShiftHz(userTimeAll_s, GPS.L1CA) assert abs(100. - shift[0]) < EPSILON assert abs(150. - shift[1]) < EPSILON assert abs(100. - shift[2]) < EPSILON assert abs(50. - shift[3]) < EPSILON