def test_bpsk_mapping():
    expected_symbolstream = numpy.array([1 + 1j, -1 - 1j])/numpy.sqrt(2)
    actual_bitstream = numpy.array([0, 1])
    actual_symbolstream = iq_mapper.bpsk(actual_bitstream)
    results = utils.isclose(
        expected_symbolstream, actual_symbolstream, atol=0.01, rtol=0.01
    )
    assert (results).all()
def test_qam16_mapping():
    expected_symbolstream = numpy.array(
           [+1 + 1j,      1 + 3j,      3 + 1j,      3 + 3j,
            +1 - 1j,      1 - 3j,      3 - 1j,      3 - 3j,
            -1 + 1j,     -1 + 3j,     -3 + 1j,     -3 + 3j,
            -1 - 1j,     -1 - 3j,     -3 - 1j,     -3 - 3j]
    )/numpy.sqrt(10)
    actual_bitstream = numpy.array(
        [0, 0, 0, 0,  0, 0, 0, 1,  0, 0, 1, 0,  0, 0, 1, 1,
         0, 1, 0, 0,  0, 1, 0, 1,  0, 1, 1, 0,  0, 1, 1, 1,
         1, 0, 0, 0,  1, 0, 0, 1,  1, 0, 1, 0,  1, 0, 1, 1,
         1, 1, 0, 0,  1, 1, 0, 1,  1, 1, 1, 0,  1, 1, 1, 1]
    )
    actual_symbolstream = iq_mapper.qam16(actual_bitstream)
    results = utils.isclose(
        expected_symbolstream, actual_symbolstream, atol=0.01, rtol=0.01
    )
    assert (results).all()
def test_qam():
    time = numpy.linspace(0, 1, int(1e5))
    symbol_duration = 0.25
    carrier_freq = 400
    angular_freq = 2 * numpy.pi * carrier_freq
    expected_symbolstream = numpy.array([-1 - 2j, -3 + 4j, 5 - 6j, 7 + 8j])
    actual_waveform_cos1 = -1 * numpy.cos(angular_freq * time[0:25000])
    actual_waveform_sin1 = -2 * numpy.sin(angular_freq * time[0:25000])
    actual_waveform_cos2 = -3 * numpy.cos(angular_freq * time[25000:50000])
    actual_waveform_sin2 = +4 * numpy.sin(angular_freq * time[25000:50000])
    actual_waveform_cos3 = +5 * numpy.cos(angular_freq * time[50000:75000])
    actual_waveform_sin3 = -6 * numpy.sin(angular_freq * time[50000:75000])
    actual_waveform_cos4 = +7 * numpy.cos(angular_freq * time[75000:100000])
    actual_waveform_sin4 = +8 * numpy.sin(angular_freq * time[75000:100000])
    actual_waveform = numpy.stack([
        actual_waveform_cos1 + actual_waveform_sin1,
        actual_waveform_cos2 + actual_waveform_sin2,
        actual_waveform_cos3 + actual_waveform_sin3,
        actual_waveform_cos4 + actual_waveform_sin4
    ]).flatten()
    actual_symbolstream = wave_detector.qam(time, actual_waveform,
                                            symbol_duration, carrier_freq)
    assert (utils.isclose(expected_symbolstream, actual_symbolstream)).all()
def test_qam():
    time = numpy.linspace(0, 1, int(1e5))
    carrier_freq = 400
    angular_freq = 2*numpy.pi*carrier_freq
    symbol_duration = 0.25
    expected_waveform_cos1 = +1*numpy.cos(angular_freq*time[0:25000])
    expected_waveform_sin1 = +2*numpy.sin(angular_freq*time[0:25000])
    expected_waveform_cos2 = +3*numpy.cos(angular_freq*time[25000:50000])
    expected_waveform_sin2 = -4*numpy.sin(angular_freq*time[25000:50000])
    expected_waveform_cos3 = -5*numpy.cos(angular_freq*time[50000:75000])
    expected_waveform_sin3 = +6*numpy.sin(angular_freq*time[50000:75000])
    expected_waveform_cos4 = -7*numpy.cos(angular_freq*time[75000:100000])
    expected_waveform_sin4 = -8*numpy.sin(angular_freq*time[75000:100000])
    expected_waveform = numpy.stack(
        [expected_waveform_cos1 + expected_waveform_sin1,
         expected_waveform_cos2 + expected_waveform_sin2,
         expected_waveform_cos3 + expected_waveform_sin3,
         expected_waveform_cos4 + expected_waveform_sin4]
    ).flatten()
    actual_symbolstream = numpy.array([1 + 2j, 3 - 4j, -5 + 6j, -7 - 8j])
    actual_waveform = wave_generator.qam(
        time, actual_symbolstream, symbol_duration, carrier_freq
    )
    assert (utils.isclose(expected_waveform, actual_waveform)).all()
Exemplo n.º 5
0
def test_isclose(expected, arg1, arg2, atol, rtol):
    assert (expected == utils.isclose(arg1, arg2, atol=atol, rtol=rtol))