Кодирование и декодирование длин серий в MATLAB
Кодирование длин серий, или 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 |
Выход: