📄 globe.bas
字号:
Attribute VB_Name = "GLOBE"
Global Const FLEN = 240
Global Const OVL = 160
Global Const DPOS = 5 'ノVC,DPOS = 4
Global Const COFF = 0.95
Global Const PI = 3.141592651
Global Const FLPC = 12
Global Const CEP = 14
Global Const MAXFRAME = 1000
Global Const STATE = 3
Global Const VITERBICRITERIA = 1
Global Const DIMM = 28
Global a, i, j, m, n As Integer
Global mainCEP(CEP - 1), sample(FLEN - 1), CEPP(CEP - 1) As Double
Global sample2(FLEN - 1), totalCEP(MAXFRAME - 1, CEP - 1) As Double
Global framenum() As Integer
Global feature(20, MAXFRAME - 1, 2 * CEP - 1) As Double
Global name1(30), name2(30), name3(30) As String
Global mean(STATE - 1, 2 * CEP - 1) As Double
Global var(STATE - 1, 2 * CEP - 1) As Double
Global mean_r(STATE - 1, 2 * CEP - 1) As Double
Global var_r(STATE - 1, 2 * CEP - 1) As Double
Global fileName(100) As String
Global filetemp As String
Global sstar(20, MAXFRAME)
Global file_num As Byte
Global delta(20, MAXFRAME, STATE - 1)
Global d(20, MAXFRAME, STATE - 1) As Double
Global delta_b, delta_n, def, p_scale(STATE - 1), totdist As Double
Global sizedata As Byte
Global size As Long
Function LPC(sample As Variant, CEPR As Variant)
Dim i, j, n, m As Integer
Dim s(FLEN - 1), r(FLPC), e(FLPC), a(FLPC, FLPC), k(FLPC), h(FLPC + 2) As Double
Dim x, sum As Variant
s(0) = sample(0)
For i = 1 To FLEN - 1
s(i) = sample(i) - COFF * sample(i - 1) ' y(n)=x(n)-0.95x(n-1)
' end of for (i)
Next i
'hamming windows
For i = 0 To FLEN - 1 ' y'(n)= y(n)h(n)=y(n)*(0.54-0.46cos(2n*PI/N-1) , 0<=n<=N-1*/
s(i) = s(i) * (0.54 - 0.46 * (Cos(((2 * PI * i) / (FLEN - 1)))))
Next i
' Durbin's Algorithm
For i = 0 To FLPC ' start of compute Rn
r(i) = 0
For j = 0 To FLEN - 1 - i
r(i) = s(j) * s(j + i) + r(i) ' Rn(k)= SUM ( Sn(m)Sn(m+k)) ,m=0 ~ (N-1-k) */
Next j
Next i
' end of compute Rn
e(0) = r(0) ' start compute alfa -"a" (FLPC cofficient)*/
For i = 1 To FLPC
x = 0
For j = 1 To i - 1
x = x + a(i - 1, j) * r(i - j) ' sum(a(i-1)(j)*r(i-j))
Next j
If e(i - 1) = 0 Then
e(i - 1) = 1000000
End If
k(i) = (r(i) - x) / e(i - 1)
a(i, i) = k(i)
For j = 1 To i - 1
a(i, j) = a(i - 1, j) - k(i) * a(i - 1, i - j)
Next j
e(i) = (1 - k(i) * k(i)) * e(i - 1)
Next i
' end of compute alfa
For i = 0 To FLPC - 1
a(FLPC, i + 1) = -a(FLPC, i + 1)
' b(i)=a(FLPC)(i+1) ' get FLPC cofficient into b(0) ~ b(FLPC-1)*/
Next i
' CEPstrum
h(1) = -a(FLPC, 1)
For n = 2 To FLPC ' 1< n <=p*
sum = 0
For m = 1 To n - 1 ' sum((1-m/n)*Am*Cn-m , m=1 ~ n-1*/
sum = sum + (1 - (m * 1) / (n * 1)) * a(FLPC, m) * h(n - m)
Next m
h(n) = -a(FLPC, n) - sum ' Cn=An+sum((1-m/n)*Am*Cn-m*/
Next n
' end if 1 < n <=p
For n = FLPC + 1 To CEP ' n > p
sum = 0
For m = 1 To FLPC ' sum(1-m/n)*Am*Cn-m*/
sum = sum + (1 - (m * 1) / (n * 1)) * a(FLPC, m) * h(n - m)
Next m
h(n) = -sum
' end of n > p */
Next n
For i = 0 To CEP - 1
CEPR(i) = h(i + 1) ' put CEPtrum into CEP(i) and return
Next i
' end of submain FLPC
End Function
Function deltacep(l As Integer, m As Byte, d As Variant)
'l=Τ碭
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -