%Taken directly from LPC Vocoder GUI ver. 1.0 %@http://www.mathworks.com/matlabcentral/fileexchange/20331 %Function that solves Ra=r using durbin recursion if R is toeplitz function [alpha,G]=durbin_method(Rn,p) E(1)=Rn(1); %E(0)=R(0) for i=1:1:p if i==1; k(i)=Rn(i+1)/E(i); a(i,i)=k(i); E(i+1)=(1-(k(i)^2))*E(i); else partial_sum=0; for j=1:1:i-1 partial_sum=partial_sum+a(i-1,j)*Rn(i-j+1); end k(i)=(Rn(i+1)-partial_sum)/E(i); a(i,i)=k(i); for j=1:1:i-1 a(i,j)=a(i-1,j)-k(i)*a(i-1,i-j); end E(i+1)=(1-k(i)^2)*E(i); end end for j=1:1:p alpha(j,1)=a(p,j); end G=sqrt(Rn(1)-dot(alpha(:,1),Rn(2:p+1))); %determine gain