Procedur, die sich selbst aufruft
Verfasst: 27.02.2017 12:28
Hallo,
Bei der Beschäftigung mit der schnellen Fourier-Analyse (FFT) bin ich dabei, ein Demonstrationsprogramm aus Freepascal auf PureBasic zum Laufen zu bringen. In dem Pascal-Programm ist eine FFT-Procedur, die sich selbst aufruft, um nach und nach die Werte zu generieren.
Mein Code für diese Procedur sieht zuzeit so aus:
Die Zeilen "fft(u,cp,n3)" und die nächste sind die aufrufenden Ausdrücke. Der Compiler zeigt mir genau an dieser Stelle Fehler an. Leider habe ich in der vergangenen Zeit und im Handbuch nicht eindeutiges dazu gefunden (, oder ich habe momentan ein Brett vor dem Kopf).
Kann mir jemand auf die Sprünge helfen?
Bei der Beschäftigung mit der schnellen Fourier-Analyse (FFT) bin ich dabei, ein Demonstrationsprogramm aus Freepascal auf PureBasic zum Laufen zu bringen. In dem Pascal-Programm ist eine FFT-Procedur, die sich selbst aufruft, um nach und nach die Werte zu generieren.
Mein Code für diese Procedur sieht zuzeit so aus:
Code: Alles auswählen
Procedure fft(Array f(1),Array c(1),n.l); !!!Achtung!!! Variable "f" und "c" sind Arrays!
Dim u.f(2047)
Dim v.f(2047)
Dim cp.f(2047)
Dim cm.f(2047)
If n=1
c(0)=f(0)
c(1)=f(1)
Else
n1=n-1
n2=n/2
For j=0 To n1
w(2*j)=Cos(j*2*Pi/n)
w(2*j+1)=-Sin(j*2*Pi/n)
Next
For j=0 To n2-1
u(2*j) =(f(2*j)+f2*j+n)/2
u(2*j+1)=(f(2*j+1)+f(2*j+1+n))/2
v(2*j) =((f(2*j)-f(2*j+n))*w(2*j)-(f(2*j+1)-f(2*j+1+n))*w(2*j+1))/2
v(2*j+1)=((f(2*j)-f(2*j+n))*w(2*j+1)+(f(2*j+1)-f(2*j+1+n))*w(2*j))/2
Next
fft(u,cp,n2) ;Übergabewert richtig?
fft(v(),cm(),n2) ;dito
For j=0 To n2-1
c(4*j)=cp(2*j)
c(4*j+1)=cp(2*j+1)
c(4*j+2)=cm(2*j)
c(4*j+3)=cm(2*j+1)
Next
EndIf
EndProcedure
Kann mir jemand auf die Sprünge helfen?