Неправильный результат для турбодекодера, записанного с помощью Commpy - PullRequest
0 голосов
/ 28 мая 2020

Есть ли у кого-нибудь опыт использования библиотеки Commpy (https://commpy.readthedocs.io/en/latest/) для создания турбокодеров / турбодекодеров?

Я написал простой код для тестирования турбокодов, но в канале без шума i не могу расшифровать сообщение ... Где я ошибся?

Мой код:

import numpy as np
import commpy.channelcoding as cc
import commpy.utilities as cu

memory = np.array([2]) # D
g_matrix = np.array([[0o5, 0o7]]) # G(D) = [1+D^2, 1+D+D^2]
trellis_1 = cc.Trellis(memory, g_matrix)

msg = "test-test-test"
msg = np.concatenate([cu.dec2bitarray(ord(chr), 8) for chr in msg])
print("MSG: \n{}".format(msg))

interleaver = cc.RandInterlv(len(msg), 1667)
turbo_enc = cc.turbo_encode(msg, trellis_1, trellis_1, interleaver)
sys_stream, non_sys_stream_1, non_sys_stream_2 = turbo_enc
print("\nEncoded MSG:",
    "\nsys_stream: {} \nnon_sys_stream_1: {} \nnon_sys_stream_2: {}".format(*turbo_enc))

l_ext, dec_result = cc.map_decode(sys_stream, non_sys_stream_1, trellis_1,
    1., np.zeros(len(msg)))
print("\nMAP decode result: {}\nhamming_dist={}".format(
    dec_result, cu.hamming_dist(msg, dec_result)))

dec_result = cc.turbo_decode(sys_stream, non_sys_stream_1, non_sys_stream_2, trellis_1,
    1., 8, interleaver, np.zeros(len(msg)))
print("\nTurboDecoder decode result: {}\nhamming_dist={}".format(
    dec_result, cu.hamming_dist(msg, dec_result)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...