lpc_coefficients.m
上传用户:shodew
上传日期:2014-10-29
资源大小:6k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function c=lpc_coefficients(s,p)
  2. %此函数的功能是用自相关法求信号s使均方预测误差为最小的预测系数
  3. %算法为Durbin快速递推算法
  4. %注:s必须是一维向量 p为声道模型的阶数
  5. n=length(s);                                             %获得信号长度                    
  6. for i=1:p                                                %测试向量
  7.     Rp(i)=sum(s(i+1:n).*s(1:n-i));                       %求向量的自相关函数
  8.     %Rn(i)=sum(s(1:N-i).*s(1+i:N));
  9. end
  10. Rp_0=s'*s;                                               %即Rn(0)
  11. Ep=zeros(p,1);                                           %Ep为p阶最佳线性预测反滤波能量
  12. k=zeros(p,1);                                            %k为偏相关系数
  13. a=zeros(p,p);                                            %以上为初始化
  14. %i=1的情况需要特殊处理,也是对p=1进行处理
  15. Ep_0=Rp_0;
  16. k(1)=Rp(1)/Rp_0;
  17. a(1,1)=k(1);
  18. Ep(1)=(1-k(1)^2)*Ep_0;
  19. %i=2起使用递归算法
  20. if p>1                                                  
  21.     for i=2:p
  22.         k(i)=(Rp(i)-sum( a(1:i-1,i-1).*Rp(i-1:-1:1)'))/Ep(i-1);
  23.         a(i,i)=k(i);
  24.         Ep(i)=(1-k(i)^2)*Ep(i-1);
  25.         for j=1:i-1
  26.             a(j,i)=a(j,i-1)-k(i)*a(i-j,i-1);
  27.         end
  28.     end
  29. end
  30. c=a(:,p);                                                %c(j)=a(j,p)
  31. %c2 =lpc(s,p)                                            %信号处理工具箱中的函数