Die Daten müssen getrennt für Real- und Imaginärteil in je eine Datei gespeichert sein. Es wird Äquidistanz der Daten vorausgesetzt. Die Anzahl der Daten müssen eine Zweierpotenz sein. Die Daten müssen zeilenweise abgespeichert werden. Sie können mittels des Befehls readdata( dateiname, Zahlenformat,1) gelesen werden. Als Zahlenformate kommen integer oder float in Frage.
restart: readlib(readdata): readlib(FFT): readdata(`realteildatei`,Zahlenformat,1): datar:=array("): readdata(`imaginärteildatei`,Zahlenformat,1): datai:=array("): N:= ; `(* Zweierpotenz *)`: dataxy:=[seq([i,abs(datar[i]+I*datai[i])],i=1..2^N)]: plot(dataxy); FFT(N,datar,datai); `(* Das Ergebnis wird in die Datendateien eingeschrieben. *)`: datxy:=[seq([i,abs(datar[i]+I*datai[i])],i=1..2^N)]: plot(datxy,1..50);
Beispiel:
Daten eines Rechteckimpulses--
Realteil:462 Nullen, 100 Einsen, 462 Nullen
Imaginärteil: 1024 Nullen.
readlib(FFT): datar:= array([0$462,1$100,0$462]): datai:= array([0$1024]): N:=10 ; `( * Zweierpotenz *)`: dataxy:=[seq([i,abs(datar[ i]+I*datai[i])],i=1..2^N)]: plot(dataxy); FFT(N,datar,datai); `(* Das Ergebnis wird in die Datendateien eingeschrieben. *) `: datxy:=[seq([i,abs(datar[i]+I*datai[i])],i=1..2^N)]: plot(datxy,1..50);