DTW-js版

最近想试试语音识别,然后看到了DTW这个算法

主要参考:http://www.cnblogs.com/rockyf/articles/4519352.html

复制代码
 1 function dtw(arr1, arr2){
 2     var matrix = [];
 3     arr1.forEach(function(value1){
 4         var line = [];
 5         matrix.push(line);
 6         arr2.forEach(function(value2){
 7             line.push(distance(value1, value2));
 8         });
 9     });
10     console.log(matrix);
11 
12     console.log(minSearch(matrix, arr2.length, arr1.length));
13 }
14 
15 function minSearch(matrix, i, j){
16     if(i == 0 || j == 0){
17         return 0;
18     }
19     var d = matrix[j - 1][i - 1];
20     var a = minSearch(matrix, i - 1, j) + d;
21     var b = minSearch(matrix, i, j - 1) + d;
22     var c = minSearch(matrix, i - 1, j - 1) + d * 2;
23     return Math.min(a, b, c);
24 }
25 
26 function distance(value1, value2){
27     return Math.abs(value1 - value2);
28 }
29 
30 dtw([1, 2], [1, 3]);
复制代码

很简单的一个递归来做最小值查找,即可查找到最优路径和两个数组的距离。

posted @   RockyF  阅读(700)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示