Run Length Encoding & Decoding in MATLAB
Run-length encoding (RLE) is a very simple form of lossless data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. This is most useful on data that contains many such runs.
A counting sequence(RLE) is formed by "counting" the entries in a given sequence.
For example, the sequence x = 5, 5, 2, 1, 1, 1, 1, 3
can be read as Two 5's, one 2, four 1's, one 3
which translates to y = 2, 5, 1, 2, 4, 1, 1, 3
So y is the counting sequence for x.
For example, the sequence x = 2, 5, 1, 2, 4, 1, 1, 3
can be read as Two 5's, one 2, four 1's, one 3
which translates to y = 5, 5, 2, 1, 1, 1, 1, 3
For more detail & examples , check the below link:
Encoding in MATLAB:
For example, the sequence x = 5, 5, 2, 1, 1, 1, 1, 3
can be read as Two 5's, one 2, four 1's, one 3
which translates to y = 2, 5, 1, 2, 4, 1, 1, 3
So y is the counting sequence for x.
Following is the MATLAB CODE which can be implemented for the encoding purpose:
clc
clear all
close all
x=input('Enter the array:');
y=[];
c=1;
for i=1:length(x)-1
if(x(i)==x(i+1))
c=c+1;
else
y=[y,c,x(i),];
c=1;
end
end
y=[y,c,x(length(x))];
disp(y);
Explanation:
Sample Output:
Decoding in MATLAB:
For example, the sequence x = 2, 5, 1, 2, 4, 1, 1, 3
can be read as Two 5's, one 2, four 1's, one 3
which translates to y = 5, 5, 2, 1, 1, 1, 1, 3
MATLAB CODE for Decoding:
clc
clear all
close all
x=input('Enter the array:');
y=[];
for i=1:2:length(x)
y=[y x(i)];
end
z=[];
for i=2:2:length(x)
z=[z x(i)];
end
v=[];
for i=1:length(y)
m=y(i);
q=z(i);
for j=1:m
v=[v q];
end
end
Explanation:
Sample Output:
No comments