Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. import numpy as np
  2.  
  3. class DTW:
  4.  
  5. def __init__(self, n, m):
  6. cdef double[:, :] dp = np.ones((n + 1, m + 1)) * float('inf')
  7. self.dp = dp
  8. self.n = n
  9. self.m = m
  10.  
  11. def clear(self):
  12. self.dp * float('inf')
  13. self.dp[0,0] = 0
  14.  
  15. def dtw(self, x, y):
  16. assert len(x) == self.n and len(y) == self.m
  17. cdef int i, j
  18. cdef double dist
  19. self.clear()
  20. for i in range(1, self.n):
  21. for j in range(1, self.m):
  22. dist = np.sum(np.square(x[i - 1] - y[j - 1]))
  23. self.dp[i, j] = dist + min([
  24. self.dp[i - 1, j ],
  25. self.dp[i , j - 1],
  26. self.dp[i - 1, j - 1]
  27. ])
  28. return self.dp[self.n, self.m]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement