예제 #1
0
def extract_next_bits_with_zero_padding(buffer_, index, nrof_bits):
    extracted_bits = itpp.bvec()
    buffer_size = buffer_.length()

    if (index + nrof_bits) <= buffer_size:
        extracted_bits = buffer_.mid(index, nrof_bits)
    else:
        extracted_bits = buffer_.mid(index, buffer_size - index)
        nrof_padding_bits = nrof_bits - extracted_bits.length()
        extracted_bits = itpp.concat(extracted_bits,
                                     itpp.zeros_b(nrof_padding_bits))

    return extracted_bits
예제 #2
0
    def _rate_match_by_truncation(input_bits):
        nrof_blocks = int(input_bits.length() / input_block_size)
        rate_matched_bits = zeros_b(nrof_blocks * rate_matched_block_size)

        for block_index in range(nrof_blocks):
            # Extract the current block bring rate matched
            rate_matched_block = input_bits.mid(block_index * input_block_size,
                                                rate_matched_block_size)

            # Truncate the rightmost bits and insert into the rate matched bits
            rate_matched_bits.set_subvector(
                block_index * rate_matched_block_size, rate_matched_block)

        return rate_matched_bits
def error_counter(blocks_in, blocks_out, blocksize):
    nrof_blocks = int(blocks_in.length() / blocksize)
    block_success = itpp.zeros_b(nrof_blocks)
    nrof_errors = 0

    for block_index in range(nrof_blocks):
        if (blocks_in.mid(block_index * blocksize, blocksize) !=
                blocks_out.mid(block_index * blocksize, blocksize)):
            block_success[block_index] = itpp.bin(0)
            nrof_errors += 1
        else:
            block_success[block_index] = itpp.bin(1)

    block_error_ratio = float(nrof_errors) / float(nrof_blocks)

    block_success_np = np.array(block_success)

    return (block_error_ratio, block_success_np)
def error_counter(blocks_in, blocks_out, blocksize):
    nrof_blocks = int(blocks_in.length() / blocksize)
    block_success = itpp.zeros_b(nrof_blocks)
    nrof_errors = 0

    for block_index in range(nrof_blocks):
        if (blocks_in.mid(block_index * blocksize, blocksize) !=
                blocks_out.mid(block_index * blocksize, blocksize)):
            block_success[block_index] = itpp.bin(0)
            nrof_errors += 1
        else:
            block_success[block_index] = itpp.bin(1)

    block_error_ratio = float(nrof_errors) / float(nrof_blocks)

    block_success_np = np.fromstring(block_success.__str__()[1:-1],
                                     dtype=np.int,
                                     sep=', ')

    return (block_error_ratio, block_success_np)