Dziwne wyniki FFT-odtwarzane fali jest inny

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
 

Welcome to EDABoard.com

Sponsor

Back
Top