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
EndProcedureKann mir jemand auf die Sprünge helfen?