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