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

语音压缩

开发平台:

Unix_Linux

  1. /**************************************************************************
  2. *
  3. * NAME
  4. * cor
  5. *
  6. * FUNCTION
  7. *
  8. * compute auto-correlation coefficients by direct multiplication
  9. *
  10. * SYNOPSIS
  11. *
  12. * subroutine cor(rar, idim, n, c0, c)
  13. *
  14. *   formal 
  15. *                       data    I/O
  16. *       name            type    type    function
  17. *       -------------------------------------------------------------------
  18. *       rar             float   i       Input data frame
  19. *       idim            int     i       frame size
  20. *       n               int     i       Number of correlation terms, 
  21. *                                        exclusive C0
  22. *       c0              float   o       C(0)
  23. *       c               float   o       Auto correlation terms C(i), i=1,n
  24. *       
  25. ***************************************************************************
  26. *       
  27. * DESCRIPTION
  28. *
  29. *       COR computes the autocorrelation coefficients of the data
  30. *       sequence rar according to the following formula:
  31. *
  32. *              idim
  33. *       C(i) = SUM   rar(k) * rar(k-i)   , where i = 0, ..., n lags
  34. *              k=i+1
  35. *
  36. *       c0 = C(0)
  37. *
  38. * NOTE:  rar(k-i) is truncated, so C(i) are true autocorrelations.
  39. *
  40. ***************************************************************************
  41. *
  42. * CALLED BY
  43. *
  44. * autohf distortion
  45. *
  46. * CALLS
  47. *
  48. *
  49. *
  50. **************************************************************************/
  51. cor(rar, idim, n, c0, c)
  52. int idim, n;
  53. float *rar, *c0, *c;
  54. {
  55.   int i, k;
  56.   
  57.   for (*c0 = 0.0, i = 0; i < idim; i++)
  58.     *c0 += *(rar+i) * *(rar+i);
  59.   for (i = 0; i < n; i++)
  60.   {
  61.     for (*(c+i) = 0.0, k = i+1; k < idim; k++)
  62.       *(c+i) += *(rar+k) * *(rar+k-i-1);
  63.   }
  64. }