Arithmetic coding increases sequence length
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all, I'm using the function "arithenco(seq,counts)" to compress a sequence of 1's,2's,3's and 4's of size 65536. The correspondent counts (number of occurrences for each symbol) is [1991,7759,52117,3669] so the symbol 3 shows an high probability to occur and I would expect a compression gain from the arithmetic code. But this doesn't happen, and the function outputs a code of size 66424 (longer than the original), how is possible? Thank you for the attention.
1 commentaire
Michael Montouchet
le 2 Oct 2025
Modifié(e) : Michael Montouchet
le 2 Oct 2025
To write your sequence of 1, 2, 3, 4 as a binary sequence, you need at least 2 bits per symbol. The space required to write it as a binary sequence is 2 * 65536 bits.
The arithmetic code is made of 0 and 1, so you need 1 bit per symbol. The space required to write it as a binary sequence is 1 * 66424 bits.
So you managed to compress an initial input into a code that is nearly half of the initial size.
Réponses (1)
Michael Montouchet
le 2 Oct 2025
Modifié(e) : Michael Montouchet
le 2 Oct 2025
To write your sequence of 1, 2, 3, 4 as a binary sequence, you need at least 2 bits per symbol. The space required to write it as a binary sequence is 2 * 65536 bits.
The arithmetic code is made of 0 and 1, so you need 1 bit per symbol. The space required to write it as a binary sequence is 1 * 66424 bits.
So you managed to compress an initial input into a code that is nearly half of the initial size.
0 commentaires
Voir également
Catégories
En savoir plus sur Electrical Block Libraries dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!