You are on page 1of 2

function ADPCM_exe

s= wavread('D:\2\\project_files\sample2_10k.wav');
lplen = 20;
bitsize = input('input the bitzise 4 or 8 or 16 =
');
slen = length(s);
d(1) = s(1) ;
[b0, b, bb] = deci_to_bin(d(1), bitsize);
[Q(1)] = bin_to_deci(b0,b);
B = [b0,b];
st(1) = Q(1);
for i=2:slen
if i<=lplen
d(i) = s(i) - st(i-1);
[b0, b, bb] = deci_to_bin(d(i), bitsize);
[Q(i)] = bin_to_deci(b0,b);
B = [b0,b];
st(i) = st(i-1) + Q(i);
else
m=0;
[a,G] = lpc(s(i-lplen:i-1),lplen);
a = a*G;
m = 1:lplen;
j = 2:lplen + 1;
sth = sum(a(j).*st(i-m));
ai(i,:) = a;
d(i) = s(i) - sth;
[b0, b, bb] = deci_to_bin(d(i), bitsize);
[Q(i)] = bin_to_deci(b0,b);
B = [b0,b];
st(i) = sth + Q(i);
end
end
b=b';
b=b(:)';
[jj, size_ai] = size(ai);
slen2 = length(b);
k = 0 ;
for l = 1: bitsize:slen
k = k+1;
mask = j : j+bitsize-1;
bb = b(mask);
b0 = bb(1);
b = bb(2:bitsize);
Q(l) = bin_to_deci(b0,b);
end
st = cumsum(Q(1:size_ai-1));
slen3 = length(Q);
h = 1:size_ai-1;
t = 2:size_ai;
for r = size_ai:slen

sth = sum(ai(r,t).*st(r-h));
st(r) = Q(r) + sth;
end

You might also like