Esempio n. 1
0
def subcarriersFromBits(bits, rate, scramblerState):
    # scrambled includes tail & padding
    scrambled = scrambler.scramble(bits, rate.Nbps, scramblerState=scramblerState)
    coded = code.encode(scrambled)
    punctured = code.puncture(coded, rate.puncturingMatrix)
    interleaved = interleaver.interleave(punctured, rate.Ncbps, rate.Nbpsc)
    mapped = qam.encode(interleaved, rate)
    return mapped.reshape(mapped.size/ofdm.format.Nsc, ofdm.format.Nsc)
Esempio n. 2
0
        """
        )
    parser.add_argument('files', metavar='file', nargs='+', type=str, help='Collada XML files')
    parser.add_argument('--adjacency', action='store_true', help='build adjacency indices for geometry shaders')
    parser.add_argument('-f', '--format', metavar='fmt', help='Vertex format', default=default_fmt)
    args = parser.parse_args()

    vertex_format = parse_vertex_format(args.format)

    for filename in args.files:
        geoms = daeload(filename)
        for (name, (semantics, position_idx, vertices, indices)) in geoms:
            prim_verts = len(indices[0]) # 1 for points, 2 for lines, 3 for triangles
            assert prim_verts == 3 # TODO: handle points and lines

            mapping, reverse_mapping, v, i = interleave(vertices, indices)

            adjtri = None
            if args.adjacency:
                edges = winged_edge(indices, position_idx)
                if not winged_edge_fully_connected(edges):
                    stderr.write('Mesh not fully connected, not building adjacency')
                else:
                    adjtri = list(build_adjacency_triangles(i, mapping, reverse_mapping, edges))

            attrs = [attr for (semantic, attr) in vertex_format]

            order = vertex_shuffle_order(semantics, vertex_format)

            if any(idx is None for idx in order):
                missing = (vertex_format[i][0] for (i, idx) in enumerate(order) if idx is None)
Esempio n. 3
0
 pilotPolarity = ofdm.pilotPolarity()
 demapped_bits = []
 j = ncp
 i = 0
 initializedPlot = False
 length_symbols = 0
 while input.size-j > nfft and i <= length_symbols:
     sym = np.fft.fft(input[j:j+nfft])*G
     data = sym[ofdm.format.dataSubcarriers]
     pilots = sym[ofdm.format.pilotSubcarriers] * next(pilotPolarity) * ofdm.format.pilotTemplate
     kalman_u = kalman_state.update(np.sum(pilots))
     data *= kalman_u
     pilots *= kalman_u
     if i==0: # signal
         signal_bits = data.real>0
         signal_bits = interleaver.interleave(signal_bits, ofdm.format.Nsc, 1, reverse=True)
         scrambled_plcp_estimate = code.decode(signal_bits*2-1, 18)
         plcp_estimate = scrambler.scramble(scrambled_plcp_estimate, int(ofdm.format.Nsc*.5), scramblerState=0)
         parity = (np.sum(plcp_estimate) & 1) == 0
         if not parity:
             return None, None, 0
         plcp_estimate = util.shiftin(plcp_estimate[:18], 18)[0]
         try:
             encoding_estimate = util.rev(plcp_estimate & 0xF, 4)
             rate_estimate = [r.encoding == encoding_estimate for r in wifi_802_11_rates].index(True)
         except ValueError:
             return None, None, 0
         r_est = wifi_802_11_rates[rate_estimate]
         Nbpsc, constellation_estimate = r_est.Nbpsc, r_est.constellation
         Ncbps, Nbps = r_est.Ncbps, r_est.Nbps
         length_octets = (plcp_estimate >> 5) & 0xFFF