T
Totem
Guest
Używam algorytm FFT Znalazłem na dspguide.com, lecz przekształcony w vb2008.Oto ona:
Kod:
Public Shared Sub FFT2 (ByRef Rex (), jako, ByRef IMX () As Single, ByVal Length As Int32)
Dim NM1 As Int32 = Długość - 1
Dim ND2 As Int32 = długość / 2
M Dim As Int32 = Math.log (długość) / Math.log (2)
Dim j As Int32 = ND2Tr Dim ti jako pojedyncze
Dim k As Int32Bo ja As Int32 = 1 to Length - 2
If I <j Then
tr = Rex (j)
ti = IMX (j)
Rex (j) = Rex (I)
IMX (j) = IMX (I)
Rex (I) = tr
IMX (I) = ti
End If
k = ND2
Do While k <= j
j -= k
k / = 2
Loop
j = k
NastępnyDim le JM1 jako pojedyncze
Dim le2, IP Single
Ur Dim ui jako pojedyncze
Sr Dim si jako pojedynczeDla l As Int32 = 1 do m
le = 2 ^ l
le2 = le / 2
ur = 1
ui = 0
sr = Math.sin (Math.PI / le2)
si =-Math.sin (Math.PI / le2)
Dla j = 1 do le2
JM1 = j - 1
For i As Int32 = JM1 Aby NM1 Krok le
ip = i le2
tr = Rex (IP) * ur - IMX IP (*) ui
ti = Rex (IP) * UI - IMX IP (*) ur
Rex (ip) = Rex (i) - tr
IMX (ip) = IMX (i) - TI
Rex (i) = tr
IMX (i) = ti
Następny
tr = ur
ur = tr * sr - ui * si
ui = tr * si - ui * sr
Następny
Następny
End Sub
Kod:
Public Shared Sub FFT2 (ByRef Rex (), jako, ByRef IMX () As Single, ByVal Length As Int32)
Dim NM1 As Int32 = Długość - 1
Dim ND2 As Int32 = długość / 2
M Dim As Int32 = Math.log (długość) / Math.log (2)
Dim j As Int32 = ND2Tr Dim ti jako pojedyncze
Dim k As Int32Bo ja As Int32 = 1 to Length - 2
If I <j Then
tr = Rex (j)
ti = IMX (j)
Rex (j) = Rex (I)
IMX (j) = IMX (I)
Rex (I) = tr
IMX (I) = ti
End If
k = ND2
Do While k <= j
j -= k
k / = 2
Loop
j = k
NastępnyDim le JM1 jako pojedyncze
Dim le2, IP Single
Ur Dim ui jako pojedyncze
Sr Dim si jako pojedynczeDla l As Int32 = 1 do m
le = 2 ^ l
le2 = le / 2
ur = 1
ui = 0
sr = Math.sin (Math.PI / le2)
si =-Math.sin (Math.PI / le2)
Dla j = 1 do le2
JM1 = j - 1
For i As Int32 = JM1 Aby NM1 Krok le
ip = i le2
tr = Rex (IP) * ur - IMX IP (*) ui
ti = Rex (IP) * UI - IMX IP (*) ur
Rex (ip) = Rex (i) - tr
IMX (ip) = IMX (i) - TI
Rex (i) = tr
IMX (i) = ti
Następny
tr = ur
ur = tr * sr - ui * si
ui = tr * si - ui * sr
Następny
Następny
End Sub