?? mfftdv.f
字號(hào):
SUBROUTINE MFFTDV(C,IVSX,IESX,NVX,NEX,TABLES,IERR)* PURPOSE:* THIS SUBROUTINE PERFORMS A DIRECT FOURIER TRANSFORM ALONG* ONE DIMENSION OF A 2-DIMENSIONAL MATRIX, USING THE* GENTLEMAN-SANDE ALGORITHM; NO REORDERING IS PERFORMED.* THE SEQUENCE TO BE TRANSFORMED IS C[IVSX,NVX], WHOSE COMPONENTS* ARE THE VECTORS C(M)[IESX,NEX].* SEE REF.[1] FOR NOTATIONS.* EXAMPLE:* LET C BE A 2-D MATRIX C(N1,N2) DECLARED VIA* DIMENSION C(ID,N2)* WITH ID.GE.N1.* THEN THE DFT ALONG THE FIRST DIMENSION IS OBTAINED BY* CALL MFFTDV(C,1,ID,N1,N2,TABLES,IERR)* THE DFT ALONG THE SECOND DIMENSION IS OBTAINED BY* CALL MFFTDV(C,ID,1,N2,N1,TABLES,IERR)* IMPLEMENTATION:* THE TRANSFORMATION IS IMPLEMENTED THROUGH REPEATED CALLS TO THE* "BUTTERFLY" TRANSFORMATION MFFT?4; PARAMETERS OF THE "BUTTERFLY"* ARE COMMUNICATED THROUGH THE COMMON BLOCK MFFTPA.* ARGUMENTS:* C : ARRAY TO BE TRANSFORMED.* IVSX,IESX,NVX,NEX: THESE ARGUMENTS DEFINE THE STRUCTURE OF* C ACCORDING TO THE DEFINITIONS ABOVE. THEY ARE UNCHANGED ON* OUTPUT;* TABLES : ARRAY PREPARED BY MFFTP. IT IS NOT CHANGED ON OUTPUT.* IT SHOULD BE DECLARED INTEGER TABLES(4*NM+14);* IT MUST BE INITIALIZED BY MFFTP BEFORE USAGE.* OUTPUT:* C : TRANSFORM OF THE ORIGINAL ARRAY; "BIT REVERSED" ORDER* IERR : ERROR CODE : =0 : SUCCESSFUL* : =3 : 'TABLES' NOT CORRECTLY INITIALIZED COMPLEX C(*) INTEGER TABLES(-14:*) INTEGER IDERR,FACERR,TBERR PARAMETER (IDERR=1,FACERR=2,TBERR=3) COMMON /MFFTPA/ IMS,IVS,IES,NM,NV,NE,MX,LX,MLIM,MSTEP,LLIM,LSTEP, $ NUSTEP,IVLIM,ILIM,MD2LIM,LD2LIM* LOADING THE COMMON BLOCK : CONSTANTS IVS=IVSX IES=IESX NV=NVX NE=NEX ILIM=(NE-1)*IES MSTEP=IVS* LOADING THE COMMON BLOCK : ITERATION-DEPENDENT QUANTITIES: INITIALIZA LX=1 MX=NV* SELECT THE HIGHEST FACTOR OF NV IFAC=TABLES(-1) GOTO(200,300,500)IFAC IERR=TBERR RETURN*... RADIX 5 LOOP500 CONTINUE DO 510 IM=1,TABLES(-12) MX=MX/5 NUSTEP=MX*MSTEP MLIM=NUSTEP-MSTEP LSTEP=NUSTEP*5 LLIM=NV*MSTEP-LSTEP CALL MFFTC4(C,TABLES(0)) LX=LX*5510 CONTINUE*.. RADIX 3 LOOP300 CONTINUE DO 310 IM=1,TABLES(-13) MX=MX/3 NUSTEP=MX*MSTEP MLIM=NUSTEP-MSTEP LSTEP=NUSTEP*3 LLIM=NV*MSTEP-LSTEP CALL MFFTB4(C,TABLES(0)) LX=LX*3310 CONTINUE*.. RADIX 2 LOOP200 CONTINUE DO 210 IM=1,TABLES(-14) MX=MX/2 NUSTEP=MX*MSTEP MLIM=NUSTEP-MSTEP MD2LIM=NUSTEP/2-MSTEP LSTEP=NUSTEP*2 LLIM=NV*MSTEP-LSTEP CALL MFFTA4(C,TABLES(0)) LX=LX+LX210 CONTINUE END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -