loo.m
上传用户:ay_070428
上传日期:2014-12-04
资源大小:11427k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function waveData = loo(waveData, distmat, mode)
  2. % LOO Leave-one-out test
  3. if nargin<1, mode=1; end
  4. waveNum = length(waveData);
  5. h = waitbar(0, 'Please wait...');
  6. for i = 1:waveNum,
  7. % fprintf('i = %gn', i);
  8. waveData(i).rank = rundtwfcn1(waveData, i, mode, distmat);
  9. waitbar(i/waveNum, h);
  10. end;
  11. close(h)
  12. %=================sub function 1========================
  13. function rank = rundtwfcn1(waveData, index, mode, distmat)
  14. waveNum = length(waveData);
  15. distance = distmat(index, :);
  16. if mode == 1, % Mode 1 is file-based LOO test
  17. distance(index) = inf;
  18. else % Mode 2 is speaker-based LOO test
  19. for i=1:waveNum,
  20. if strcmp(waveData(index).speaker, waveData(i).speaker),
  21.           distance(i) = inf;
  22. end
  23. end
  24. end
  25. [a,b] = sort(distance);
  26. for i = 1:length(b),
  27. if strcmp(waveData(b(i)).answer, waveData(index).answer);
  28. rank = i;
  29. break;
  30. end
  31. end