⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtw.vb

📁 DTW的VB实现
💻 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 + -