dtwdistance.m
上传用户:doudz874
上传日期:2007-03-30
资源大小:792k
文件大小:1k
源码类别:

语音合成与识别

开发平台:

Matlab

  1. function dtw=dtwdistance(model_test,modelx);
  2. [N,N2]=size(model_test);
  3. [M,M2]=size(modelx);
  4. D=NaN*ones(N,M);
  5. d=NaN*ones(N,M);
  6. D(1,1)=norm(model_test(1,:)-modelx(1,:))^2;
  7. D(2,2)=norm(model_test(2,:)-modelx(2,:))^2;
  8. d(2,2)=D(1,1)+D(2,2);
  9. D(3,2)=norm(model_test(3,:)-modelx(2,:))^2;
  10. d(3,2)=d(2,2)+D(3,2);
  11. for i=2:N-1
  12.     for j=3:M-1
  13.         if ((j-1)/(i-1) <= 2) & ((j-1)/(i-1) >= 0.5) & ((M-j)/(N-i) <= 2) & ((M-j)/(N-i) >= 0.5)
  14.             D(i,j)=norm(model_test(i,:)-modelx(j,:))^2;
  15.             d(i,j)=min([d(i-1,j),d(i-1,j-1),d(i-1,j-2)])+D(i,j);
  16.         end
  17.     end
  18. end
  19. D(N,M)=norm(model_test(N,:)-modelx(M,:))^2;
  20. d(N,M)=min([d(N-1,M),d(N-1,M-1),d(N-1,M-2)])+D(N,M);
  21. dtw=d(N,M);