from
Arithemetic Coding
by Ravi Lakkundi
Program to compress text using arithmetic coding.
|
| update_model_adaptive(symbol)
|
function update_model_adaptive(symbol)
format long
global char_to_index index_to_char freq max_frequency cum_freq no_of_symbols
max_frequency=16383;
if(cum_freq(1)==max_frequency)
cum=0;
for ii=no_of_symbols:-1:1
freq(ii)=fix((freq(ii)+1)/2);
cum_freq(ii)=cum;
cum=cum+freq(ii);
end
end
ii=symbol;
while freq(ii)==freq(ii-1)
ii=ii-1;
end
if(ii<symbol)
ch_ii=index_to_char(ii);
ch_symbol=index_to_char(symbol);
index_to_char(ii)=ch_symbol;
index_to_char(symbol)=ch_ii;
char_to_index(ch_ii)=symbol;
char_to_index(ch_symbol)=ii;
end
freq(ii)=freq(ii)+1; % was only ii+1 ??? but worked
while ii>1
ii=ii-1;
cum_freq(ii)=cum_freq(ii)+1;
end
%cum_freq(1:10)
%freq(1:10)
|
|
Contact us at files@mathworks.com