📄 dtw.vb
字号:
Public Class DTW
'DTW function
Public Shared Function dtw(ByVal testAudio(,) As Double, ByVal referAudio(,) As Double, ByVal lenRowTest As Integer, ByVal lenRorRefer As _
Integer, ByVal lenColuRefer As Integer) As Double
Dim n As Integer
Dim m As Integer
Dim z As Integer
Dim i As Integer
'n = testAudio.Length(0) - 1
n = lenRowTest
'm = referAudio.Length(0) - 1
m = lenRorRefer
'z = testAudio.Length(1) - 1
z = lenColuRefer
Dim d(n, m) As Double
For i = 0 To n
For j = 0 To m
d(i, j) = 0
Next
Next
Dim k As Integer
Dim dtemp As Double = 0
For i = 0 To n
For j = 0 To m
For k = 0 To z
dtemp = dtemp + (testAudio(i, k) - referAudio(j, k)) * (testAudio(i, k) - referAudio(j, k))
Next
d(i, j) = dtemp
Next
Next
Dim realmax As Double = 100000000
Dim D0(n, m) As Double
Dim D1 As Double
Dim D2 As Double
Dim D3 As Double
D0(1, 1) = d(1, 1)
For i = 1 To n
For j = 1 To m
D1 = d(i - 1, j)
If j > 1 Then
D2 = d(i - 1, j - 1)
Else
D2 = realmax
End If
If j > 2 Then
D3 = d(i - 1, j - 2)
Else
D3 = realmax
End If
D0(i, j) = d(i, j) + minThree(D1, D2, D3)
Next
Next
Dim distance As Double
distance = D0(n, m)
Return distance
End Function
Private Shared Function minThree(ByVal D1 As Double, ByVal D2 As Double, ByVal D3 As Double) As Double
Dim temp1 As Double
Dim temp As Double
If D1 > D2 Then
temp1 = D2
Else
temp1 = D1
End If
If temp1 > D3 Then
temp = temp1
Else
temp = D3
End If
Return temp
End Function
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -