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)
""" ) 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)
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