Skip to main content

A Convolutional Encoder and Viterbi Decoder in Python/C++.

Project description

Convolutional Encoder and Viterbi Decoder

License Version PyPI - Python Version PyPI - Downloads

This project is a fork of https://github.com/xukmin/viterbi that introduces Python support, enabling effortless utilization of the Viterbi module within the Python environment.

Install

pip install viterbi

Usage

The following is a convolutional encoder with a constraint length of 7. The diagram indicates the binary values and polynomial form, indicating the left-most bit is the most-significant-bit (MSB). The generating polynomials are 1011011 and 1111001 can be alternatively expressed in octal as 133 and 171, respectively.

convolutional encoder

Expressed in code as:

from viterbi import Viterbi
dot11a_codec = Viterbi(7, [0o133, 0o171])

You can use the viterbi decoder like this:

from viterbi import Viterbi

dot11a_codec = Viterbi(7, [0o133, 0o171])
bits = [0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0]
output = dot11a_codec.encode(bits)
# [0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1]
dot11a_codec.decode(output)
# [0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0]

Puncturing

This library also allows you to puncture the original encoded data by specifying a puncture pattern or decode data that has already been punctured.

from viterbi import Viterbi

# Puncture Pattern: [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1]
dot11a_codec = Viterbi(7, [0o133, 0o171], [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1])

Using in C++

You can find the way to use the Viterbi decoder in C++ in the README of the original project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

viterbi-0.0.4.tar.gz (15.6 kB view hashes)

Uploaded Source

Built Distributions

viterbi-0.0.4-cp311-cp311-win_amd64.whl (76.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

viterbi-0.0.4-cp311-cp311-win32.whl (67.2 kB view hashes)

Uploaded CPython 3.11 Windows x86

viterbi-0.0.4-cp311-cp311-musllinux_1_1_x86_64.whl (632.4 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

viterbi-0.0.4-cp311-cp311-musllinux_1_1_i686.whl (691.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

viterbi-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

viterbi-0.0.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (122.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

viterbi-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl (81.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

viterbi-0.0.4-cp310-cp310-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

viterbi-0.0.4-cp310-cp310-win32.whl (67.3 kB view hashes)

Uploaded CPython 3.10 Windows x86

viterbi-0.0.4-cp310-cp310-musllinux_1_1_x86_64.whl (632.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

viterbi-0.0.4-cp310-cp310-musllinux_1_1_i686.whl (691.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

viterbi-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

viterbi-0.0.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (122.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

viterbi-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl (81.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

viterbi-0.0.4-cp39-cp39-win_amd64.whl (75.9 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

viterbi-0.0.4-cp39-cp39-win32.whl (67.3 kB view hashes)

Uploaded CPython 3.9 Windows x86

viterbi-0.0.4-cp39-cp39-musllinux_1_1_x86_64.whl (632.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

viterbi-0.0.4-cp39-cp39-musllinux_1_1_i686.whl (692.0 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

viterbi-0.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (115.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

viterbi-0.0.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (122.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

viterbi-0.0.4-cp39-cp39-macosx_10_9_x86_64.whl (82.0 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

viterbi-0.0.4-cp38-cp38-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

viterbi-0.0.4-cp38-cp38-win32.whl (67.4 kB view hashes)

Uploaded CPython 3.8 Windows x86

viterbi-0.0.4-cp38-cp38-musllinux_1_1_x86_64.whl (632.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

viterbi-0.0.4-cp38-cp38-musllinux_1_1_i686.whl (691.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

viterbi-0.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

viterbi-0.0.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (122.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

viterbi-0.0.4-cp38-cp38-macosx_10_9_x86_64.whl (81.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

viterbi-0.0.4-cp37-cp37m-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

viterbi-0.0.4-cp37-cp37m-win32.whl (68.3 kB view hashes)

Uploaded CPython 3.7m Windows x86

viterbi-0.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl (633.7 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

viterbi-0.0.4-cp37-cp37m-musllinux_1_1_i686.whl (694.0 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

viterbi-0.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (116.7 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

viterbi-0.0.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (124.7 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

viterbi-0.0.4-cp37-cp37m-macosx_10_9_x86_64.whl (81.5 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page