bwexp.c
上传用户:tsjrly
上传日期:2021-02-19
资源大小:107k
文件大小:2k
源码类别:

语音压缩

开发平台:

C/C++

  1. /**************************************************************************
  2. *
  3. * ROUTINE
  4. * bwexp
  5. *
  6. * FUNCTION
  7. * Bandwidth expansion of LPC predictor coefficients
  8. *
  9. * SYNOPSIS
  10. * subroutine bwexp(alpha, pc, pcexp, n)
  11. *
  12. *   formal 
  13. *                       data    I/O
  14. *       name            type    type    function
  15. *       -------------------------------------------------------------------
  16. * alpha float i Bandwidth expansion factor
  17. * pc float i predictor coefficients
  18. * pcexp float o expanded predictor coefficients
  19. * n int i predictor order
  20. ***************************************************************************
  21. *
  22. * DESCRIPTION
  23. *
  24. *   Subroutine to perform bandwidth modification by moving the poles
  25. * (or zeros) radially in the z plane.  If the bandwidth expansion
  26. * factor (alpha) is less than unity, the bandwidths are expanded by
  27. * shifting the poles (or zeros) toward the origin of the z plane.
  28. * The predictor coefficients are scaled directly according to:
  29. *
  30. *               i-1
  31. * a' = a  alpha where i = 1, . . . , order+1
  32. *  i    i
  33. *
  34. * Resulting in a bandwidth expansion of:
  35. *
  36. * -(fs/pi)ln(alpha) Hz
  37. *
  38. * (e.g., fs = 8 kHz, alpha = 0.994127 -> 15 Hz bandwidth expansion)
  39. *
  40. * CELP's LPC predictor coefficient convention is:
  41. *              p+1         -(i-1)
  42. *       A(z) = SUM   a   z          where a  = +1.0
  43. *              i=1    i                    1
  44. *
  45. ***************************************************************************
  46. *
  47. * CALLED BY
  48. *
  49. * autohf confg impls postfilter
  50. *
  51. * CALLS
  52. *
  53. *
  54. *
  55. **************************************************************************/
  56. #include <math.h>
  57. bwexp(alpha, pc, pcexp, n)
  58. int n;
  59. float alpha, pc[], pcexp[];
  60. {
  61.   int i;
  62.   for (i = 0; i <= n; i++)
  63.     pcexp[i] = pc[i]*pow(alpha,(double)(i));
  64. }