rctopc.f
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:2k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. c==========================================================================
  2. c
  3. c NAME
  4. c rctopc
  5. c
  6. c FUNCTION
  7. c
  8. c convert reflection coefficients into lpc coefficients.
  9. c
  10. c BEWARE:  This code does not use memory efficiently.
  11. c
  12. c SYNOPSIS
  13. c
  14. c subroutine rctopc(rc, pc, p)
  15. c
  16. c   formal 
  17. c                       data I/O
  18. c name type type function
  19. c -------------------------------------------------------------------
  20. c k real i reflection coefficients (m)
  21. c pc real o predictor parameters (m+1: a(1)=1.0)
  22. c p int i predictor order
  23. c
  24. c==========================================================================
  25. c
  26. c DESCRIPTION
  27. c
  28. c Converts reflection coefficients into lpc coefficients.
  29. c
  30. c CELP's LPC predictor coefficient convention is:
  31. c              p+1         -(i-1)
  32. c       A(z) = SUM   a   z          where a  = +1.0
  33. c              i=1    i                    1
  34. c
  35. c
  36. c==========================================================================
  37. c
  38. c REFERENCES
  39. c
  40. c Rabiner & Schafer, Digital Processing of Speech Signals,
  41. c Prentice-Hall, 1978, p. 443, equations 8.131a&b&c.
  42. c
  43. c**************************************************************************
  44. c-
  45. subroutine rctopc(k, pc, p)
  46. implicit undefined(a-z)
  47. integer p
  48. real k(p), pc(p+1)
  49. include 'ccsub.h'
  50. convex #include "ccsub.h"
  51. integer i, j
  52. real a(0:maxno, 0:maxno)
  53. c
  54. do 20 i = 0, p
  55.    do 10 j = 0, p
  56.       a(j, i) = 0.0
  57. 10    continue
  58. 20 continue
  59. do 50 i = 1, p
  60.    a(i, i) = k(i)
  61.    do 40 j = 1, i-1
  62.       a(j, i) = a(j, i-1) - k(i)*a(i-j, i-1)
  63. 40    continue
  64. 50 continue
  65. pc(1) = 1.0
  66. do 60 j = 1, p
  67.    pc(j+1) = -a(j, p)
  68. 60 continue
  69. return
  70. end