vqlbg.m
上传用户:jzquartz
上传日期:2008-06-09
资源大小:389k
文件大小:1k
源码类别:

Audio

开发平台:

Matlab

  1. function r = vqlbg(d,k)
  2. % VQLBG Vector quantization using the Linde-Buzo-Gray algorithme
  3. %
  4. % Inputs: d contains training data vectors (one per column)
  5. %         k is number of centroids required
  6. %
  7. % Output: r contains the result VQ codebook (k columns, one for each centroids)
  8. %
  9. %
  10. %%%%%%%%%%%%%%%%%%
  11. %
  12. % Author:     Amin Koohi(Sohrevardi)
  13. %              AminSohrevardi@yahoo.com , AminKoohi@yahoo.com
  14. %*******************
  15. e   = .01;
  16. r   = mean(d, 2);
  17. dpr = 10000;
  18. for i = 1:log2(k)
  19.     r = [r*(1+e), r*(1-e)];
  20.     
  21.     while (1 == 1)
  22.         z = disteu(d, r);
  23.         [m,ind] = min(z, [], 2);
  24.         t = 0;
  25.         for j = 1:2^i
  26.             r(:, j) = mean(d(:, find(ind == j)), 2);
  27.             x = disteu(d(:, find(ind == j)), r(:, j));
  28.             for q = 1:length(x)
  29.                 t = t + x(q);
  30.             end
  31.         end
  32.         if (((dpr - t)/t) < e)
  33.             break;
  34.         else
  35.             dpr = t;
  36.         end
  37.    end    
  38. end