A Convolutional Encoder and Viterbi Decoder in Python/C++.
Project description
Convolutional Encoder and Viterbi Decoder
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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for viterbi-0.0.4-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a4217890fd6140ae50aea76d7254f20d3b21f23136378260200cce9c83114af |
|
MD5 | d09851b0417863aad1d8c7e8ff937c86 |
|
BLAKE2b-256 | d90484f104f3d4c1877e8ebae79f89c2d5dd874e83681dc80f70190fd148f2cc |
Hashes for viterbi-0.0.4-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 589ab579517fafa3c3b5b19a16f0863e10c007f39f62492e274b32da0eb4edae |
|
MD5 | 323ebcbd96145a37cd4244ab034c990b |
|
BLAKE2b-256 | 7269d798d55e96b29bd42dda436d6de8598e87ebcb57a2966faf0c82818cedc4 |
Hashes for viterbi-0.0.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ab42736452867faec4caf188036350a471d4bc65fd52d07bde73bf41473e616 |
|
MD5 | f2286d96dd912e6b7f6a61f2683a715f |
|
BLAKE2b-256 | f4f9bc60dc9f0d42c46e4e43a35479769da2fbd4b3577f55ffe5c816fc0f42fa |
Hashes for viterbi-0.0.4-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1eeac9385f0c8d10bfff2b3de2e3740aa2d111393718d0f7e69e55fa2880a39 |
|
MD5 | 4f4faf44d835885ee6a2e7bc6164a9aa |
|
BLAKE2b-256 | 912a6e10f52a62f05f23bc1ab5f4ef7ba306548e5ce5026cae6f9438f4937104 |
Hashes for viterbi-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 185ee3ceb221af9a26c693a1f88e437c3d85270881fc63d89e771e171a51d0ad |
|
MD5 | ab86568733b0d246d225d40e2193e664 |
|
BLAKE2b-256 | 5eb95e1b8eed9f5cf1480f4e466598cd52ea32c0b535b7eee141a684b31a0219 |
Hashes for viterbi-0.0.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97e906a7d108e66ff45da01ac75bd3c77ff6826b5f565f9214124a77bf0befa7 |
|
MD5 | 2f1717d0b2eea9f4e145c602b0fbb43d |
|
BLAKE2b-256 | e4dc54be9624b2fc3e9021a76a428bb0779130a8afd47b834367ee663f2526a2 |
Hashes for viterbi-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 639b85d67c8eeb0dc383bb1022f3d4d3478993ce3eac80d4cdd9397ff15dcc30 |
|
MD5 | f4a063bec048a5063f87821c824f9892 |
|
BLAKE2b-256 | 98437265681e05dfc64e8ec1abc232167cf1b264017e9c34ca05da24508166c6 |
Hashes for viterbi-0.0.4-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9dbcbbbab5812800aacb9cae91a409b3ee7ee15b05fbba637da651672a03f9f |
|
MD5 | cd391d976599ae2ae63413cbbc105418 |
|
BLAKE2b-256 | 78923bb83bb05100f5123b5596a92ab0d6e978cb7a58eab1a84298c33392c28b |
Hashes for viterbi-0.0.4-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef65fa106ac69e9550b9f837d3b0e5e0fa6ec3cc191c3e77e5cb11cce6ecd18c |
|
MD5 | 44ddc35a0e76c9014d4fab525e100397 |
|
BLAKE2b-256 | 2e152222de05fd2bd284080d694a5dd3ddbc93bfeb2bbc3e701957df15d9f06d |
Hashes for viterbi-0.0.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 868af6e48b8e467f995415ce4e1d73ca9dbb45d36bd3ebbd399e48f26d3c4167 |
|
MD5 | 1728206fa26b4263e6b4948e1c5a06b4 |
|
BLAKE2b-256 | e3942d3b39a9e249f9b5b847941fc18b9610f2f3b86382e5d7199746e835765a |
Hashes for viterbi-0.0.4-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7958d54571820e09c3ef5b8834c83737d2e5ea839fae10a83ecdb8642a22211c |
|
MD5 | 105a41d96de805d63f9bf4d52b2a1856 |
|
BLAKE2b-256 | 79792691cc7fcc1be7ce2771806cbacd8372dbc819a7385866d92074f8d7b611 |
Hashes for viterbi-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b82375a0adb296bd291a2ca201c327ee568eaafc607e0fcecc991cca4d17bcf |
|
MD5 | 4723178ef5f3f4f4764f3bb23f428e8d |
|
BLAKE2b-256 | c12383f1be83d781eb3883ddfcef00a958c1648cdaec29d49a1da6e52a773720 |
Hashes for viterbi-0.0.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | facd6f9c8c13d7048912c5e7a9a1e4c99778d1be7912b67b5975840d482e7761 |
|
MD5 | 11ad2158529d2f5b95991328687f5b3c |
|
BLAKE2b-256 | 8d95fa078f202f073ec7affcd0a1d4adbb0620e0c14845ef12560f15557c5892 |
Hashes for viterbi-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94d4e0e42cd58c707fd010a73037561696ee53c26c0e073fa028f96ec66a22a7 |
|
MD5 | 2dfd79a08e365b53ee5d12a62a1551ff |
|
BLAKE2b-256 | afd37c47844147511b2b0d31cf8e1d15a774ec84dc935a7f41365c2a590ad5f3 |
Hashes for viterbi-0.0.4-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2dc7612fd1d874fdd4490b1fbad292e4a9069b4420a804b0097bb304f9936a3c |
|
MD5 | f6f97b93b77d4b9ec34a224873b654ce |
|
BLAKE2b-256 | c098cad399bfabed0fa721b59f99ffb5b0caec1b3af70709e5711fe7cc8f43d3 |
Hashes for viterbi-0.0.4-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0a85cc0f537b5d7764beab92ae5dac1a5212580a65e9054d9089883e6a1c90f |
|
MD5 | c1ffcd39a42c5524ddc7229773af49d3 |
|
BLAKE2b-256 | c8a8020c5b9989f26e908ee6d0a6e781d79a22c6607b2e93507ff46763f1e17b |
Hashes for viterbi-0.0.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 009aebf2c7a9f80a9097594910c841d5245a762bfc6f721ea34eea93d510437e |
|
MD5 | a65a568989e3a400e15ce9688d1810ce |
|
BLAKE2b-256 | cadd92c70420a5953ad7bbfc904ccfd7732c53fdeec02a8815de6670e5959cd0 |
Hashes for viterbi-0.0.4-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1919810b08af99aa53c8c9168cef274570f936f23a629b8e1e9e4d5559184963 |
|
MD5 | 5968c7046d335f54897485c7cfc01546 |
|
BLAKE2b-256 | 0cf185d87a5976297f229ee2b89150f13400de462bdcd0dd8c92e9cc8241669e |
Hashes for viterbi-0.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15ef6f8690a4eaee8a82c2d319d8f8a9380e78268a2d1581650c921c78f39387 |
|
MD5 | 4fb9d8671836729d050ba748ed86a488 |
|
BLAKE2b-256 | 546f93f451300beec2d3e736bbf7492b8342ee552db45b9cff5ff4cc0ccd69bd |
Hashes for viterbi-0.0.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70e983392dc3306ee03b9eec9ff173301a315ed0d7da77a034f4776cf37ee283 |
|
MD5 | bbbd1c00bd57515c09f283ae684424fa |
|
BLAKE2b-256 | c6668c38b4c8bd4621aa6ffa1772f3978821436a10e988c80f2a91847363072a |
Hashes for viterbi-0.0.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 582f72ac6396e5c5251056ab49294f29e3e8c5a668af85659ea3ff11111deeb8 |
|
MD5 | cfd1804dba46165e72df669d037d5e6a |
|
BLAKE2b-256 | 3526b3aa14498f2186f8af8a3ed15280c0bd19fbdd3a0492cdb1fe5172c4ab6b |
Hashes for viterbi-0.0.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7449a06e1436fa6872f4ecef08e937497a3d1a3b3e6d0f044bfe26893a62ae9d |
|
MD5 | 858a6f22f4dd7982e0a2e3ea2c12cfc6 |
|
BLAKE2b-256 | 47d5f7f8c5ccb0e9e4895219f9f238908749360e62cc6bfa4e9f1c8dbb4fd0bc |
Hashes for viterbi-0.0.4-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ead43474420ebcb9133d0a78e2a6b3f5894674025a24df7fe7af7d4bceb8309 |
|
MD5 | 5ce5adbdeb3bc833f82bc4f33fa948a2 |
|
BLAKE2b-256 | f5927a92ecd6d4daa207cff9a265c828c6df5c3cae387afbd39d423bae2a036b |
Hashes for viterbi-0.0.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d45ae3cacc2d4944e63f7fc0817340edc97a5385d92857c8a53b93b6c57a329 |
|
MD5 | 02f8e5b6dfb01262b7bf113811ee65a1 |
|
BLAKE2b-256 | 79923257fafb2667ec5bed29c6cc75a8ad30c018397a62d4bc907942d66ae71d |
Hashes for viterbi-0.0.4-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1254a79c95305079bc98ce51af675260783ab95ca9d883cae03b33b3e9221ac9 |
|
MD5 | 64411fa3b6afd8eeaf317ba34728b185 |
|
BLAKE2b-256 | 0c675f93168087b9cc03047d839d26bd619a71c8882f4c20f825e1dcff2666a9 |
Hashes for viterbi-0.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54bfe4993c46750b62db4a9181e3b3855466174294848c229d1a4170f2ddbb33 |
|
MD5 | d20bcac84f5787db2476b4576cd1e94c |
|
BLAKE2b-256 | 50581c1ee93bb1445d852bc1f76b52e77aff71e114d6cae9e03d7d3ca2605f4e |
Hashes for viterbi-0.0.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76658645178d4856b6edcddc89605c4b659217cc8284e7584e60bcf628843c54 |
|
MD5 | ec9ee2ee7e81097ecd0244d1ff518fa7 |
|
BLAKE2b-256 | f498d778178456c11ff419b83b1a12d30d35c71001dd2b9b4b77a4a3b021ced9 |
Hashes for viterbi-0.0.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c81a27ffff8ca136359f35b2905b87a1e77346b237cf632c04ab6794716199b6 |
|
MD5 | 21783887a79c1a37cff6b9bb472a693d |
|
BLAKE2b-256 | 7deaee4023085ba6d9601227064a3585bdb86e570938e96579a09f88457475d7 |
Hashes for viterbi-0.0.4-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 244afd23d9b12d86ce637a689d496f75af35e020b8a2c65b503d3ee59dc0791b |
|
MD5 | 9c6de5fa96957b4c98f3051d86a7e902 |
|
BLAKE2b-256 | acc41bc468a4763c95e8c8503faa243bde41ad11ace3839392dabf18eaf51002 |
Hashes for viterbi-0.0.4-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8573de21698e365ac463b2325ff12d91a3f1fa08dde720dc8cff49d14f5e9344 |
|
MD5 | 28d638de961e1f70255ed8f7e2001a5e |
|
BLAKE2b-256 | 6530cff7eb5fb3d7502664def4c7625e799a5bf1f0df5de2f1b7e4bb516809a6 |
Hashes for viterbi-0.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac2fe665b4b066314b0f10d8d34221960db0f44bd385b510e4e319aa3d8f1a51 |
|
MD5 | 80a473461254a8876d26c442db5b32c2 |
|
BLAKE2b-256 | 0dd73ea91c180243a468ab7f97c88c1234f59261399e66412f160835d68410b5 |
Hashes for viterbi-0.0.4-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 192b05021631a04fcaca840de9985ebfa4e927c47223662246e9b5518d8ae404 |
|
MD5 | ed69761fc504b0ba51ced72b4a34baa4 |
|
BLAKE2b-256 | cae1050a7f7d53965c800b1ea5dcc9c4d1dcce9813f871c3b13856b42accddd8 |
Hashes for viterbi-0.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19b052239db12f6c2dc14d248ad08c370486fafbaedf7121528e7157c254d3c4 |
|
MD5 | 3905ee24af550572500e4365acdff9e0 |
|
BLAKE2b-256 | 60b1825454c4d57e19fb492c1c737de77fc50418ba5fa934624fd544e605939e |
Hashes for viterbi-0.0.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b99976e36f2096f6813a4aebe96bfe8bc2975bb3c0ebe896ecd34ee69501ee04 |
|
MD5 | e7228bcd235c02705899ab896437d12b |
|
BLAKE2b-256 | 7f9bcb517ca0511f21c6044411f9af9f89f3e42a3e6c0167502bec741d2b2425 |
Hashes for viterbi-0.0.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6f63b8336d77ddd76599c2cf28e749facf5fb173685e450e1d1a329b2272d69 |
|
MD5 | f9e54554b7ccb34ff0e5fcbeea8f4de5 |
|
BLAKE2b-256 | 9f1cd0f3181c23f85777a29e5df4cb690b9a20d43227e348f49de744c847b3a7 |