www.pudn.com > SPIHT_bandelet.rar > rle.m
function data = rle(x)
% data = rle(x) (de)compresses the data with the RLE-Algorithm
% Compression:
% if x is a numbervector data{1} contains the values
% and data{2} contains the run lenths
%
% Decompression:
% if x is a cell array, data contains the uncompressed values
%
% Version 1.0 by Stefan Eireiner (stefan-e@web.de)
% based on Code by Peter J. Acklam
% last change 14.05.2004
if iscell(x) % decoding
i = cumsum([ 1 x{2} ]);
j = zeros(1, i(end)-1);
j(i(1:end-1)) = 1;
data = x{1}(cumsum(j));
else % encoding
if size(x,1) > size(x,2), x = x'; end % if x is a column vector, tronspose
i = [ find(x(1:end-1) ~= x(2:end)) length(x) ];
data{2} = diff([ 0 i ]);
data{1} = x(i);
end