Кодирование и декодирование длин серий в MATLAB

Опубликовано: 19 Февраля, 2023

Кодирование длин серий, или RLE, — это простой метод сжатия данных без потерь, при котором ряды данных или последовательности данных с одинаковым значением во многих последовательных элементах сохраняются как одно значение и учитываются, а не как исходный ряд. Другими словами, RLE (кодирование длины цикла) — это простой метод сжатия данных, который включает указание количества повторений цвета символа или пикселя перед значением символа или пикселя. Цель состоит в том, чтобы использовать меньше битов для представления заданного набора данных.

Кодирование длины прогона:

Путем «подсчета» записей в заданной последовательности создается счетная последовательность (RLE).

Например, последовательность x = 2, 2, 2, 1, 1, 5, 5, 6, 6, 6, 6. может быть прочитана как три двойки, две единицы, пять двоек, четыре шестерки, что переводится как b = 3, 2, 2, 1, 5, 2, 4, 6. Следовательно, b — это схема счета для a.

Пример 1:

Matlab




% MATLAB CODE for encoding 
clc
clear all
close all
a=input("Enter the array:");
b=[];
c=1;
for i=1:length(a)-1
    if(a(i)==a(i+1))
        c=c+1;
    else
        b=[b,c,a(i),];
    c=1;
    end
end
b=[b,c,a(length(a))];
disp(b);

Выход:

Например, последовательность x = 9, 5, 1, 2, 3, 4, 5, 7 и 2, 5, 1, 2, 4, 1, 1, 3 может быть прочитана как девять пятерок, одна двойка, три четверки. , пять 7. Что означает y = 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 4, 4, 4, 7, 7, 7, 7, 7

Пример 2:

Matlab




% MATLAB code for decoding 
clc
clear all
close all
a=input("Enter the array:");
b=[];
for i=1:2:length(a)
    b=[b a(i)];
end
c=[];
for i=2:2:length(a)
    c=;
end
u=[];
for i=1:length(b)
    n=b(i);
    r=c(i);
    for q=1:n
        u=[u r];
    end
end

Выход: