|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2496 (0x9c0) Notes: Mikados TextFile, Mikados_K Names: »FFT2«
└─⟦d110b5765⟧ Bits:30005308 Eksamensopgave i dynamiske systemer med FFT └─ ⟦this⟧ »FFT2«
SEGMENT PROCEDURE FFT2(VAR XR,XI:VEKTOR; N,GAM:INTEGER); (* HER FORETAGES FFT'EN XR ER REALDELEN AF SIGNALET. XI ER IMAGINAERDELEN N ER ANTALLET AF SAMPLES GAM 2 OPLOEFTET TIL GAM ER LIGMED N *) CONST TOPI=6.2831853072; TYPE INDEX= 1..256; VAR N2,NHALV,K,L,I:INTEGER; HELPINDEX:INDEX; C,CDP,S,SDP,CGL,SGL,TR,TI,XRN2,XIN2,XRK,XIK,DP:REAL; FUNCTION BITREV(J,GAM:INTEGER):INTEGER; VAR I,J1,J2,K:INTEGER; BEGIN J1:=J; K:=0; FOR I:=1 TO GAM DO BEGIN J2:=J1 DIV 2; K:=K*2+ (J1-2*J2); J1:=J2; END; BITREV:=K; END; (* BIT REVERSERING AF DATA *) BEGIN CLEARSCREEN; WRITELN('Bit reversering af data'); WRITE('Punkt nr.'); FOR K:=0 TO N-1 DO BEGIN GOTOXY(10,2); WRITE(K); I:=BITREV(K,GAM); IF I>K THEN BEGIN TR:=XR(K); TI:=XI(K); XR(K):=XR(I); XI(K):=XI(I); XR(I):=TR; XI(I):=TI; END; END; IF TEST THEN BEGIN FOR I:=0 TO 15 DO WRITELN('XR(',I,')= ',XR(I)); READLN; END; (* START PAA SELVE(STE) FFT'EN *) N2:=1; K:=0; NHALV:=N; WRITELN; WRITELN('SELVE FFT''EN STARTER'); WRITE('Trin nr.'); FOR L:=1 TO GAM DO BEGIN GOTOXY(10,4); WRITE(L); NHALV:=NHALV DIV 2; DP:=TOPI*NHALV/N; CDP:=COS(DP); SDP:=SIN(DP); IF TEST THEN BEGIN WRITELN('DP=',DP,' CDP= ',CDP,' SDP= ',SDP); READLN; END; WHILE (K<N) DO BEGIN S:=0.0; C:=1.0; FOR I:=1 TO N2 DO BEGIN IF TEST THEN BEGIN WRITELN('S= ',S,' C= ',C,' I = ',I); WRITELN('K= ',K,'N2= ',N2); END; HELPINDEX:=K+N2; XRN2:=XR(HELPINDEX); XIN2:=XI(HELPINDEX); TR:=C*XRN2 - S*XIN2; TI:=C*XIN2 + S*XRN2; XRK:=XR(K); XIK:=XI(K); XR(HELPINDEX):=XRK - TR; XI(HELPINDEX):=XIK - TI; XR(K):=XRK + TR; XI(K):=XIK + TI; SGL:=S; CGL:=C; C:=CGL*CDP - SGL*SDP; S:=CGL*SDP + SGL*CDP; K:=K+1; END; IF TEST THEN BEGIN WRITELN('I L0KKE SLUT'); READLN; END; K:=K+N2; END; K:=0; N2:=2*N2; END; WRITELN; END;