⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.f90

📁 fortran下的FFT编程。参数格式已经转换完毕。
💻 F90
字号:
!2009-1-3  快速付利叶变换子程序的编写
!电子工程与光电技术学院
program fft      
real,parameter::pi=3.1415926535898 	  
!real::DATA1(32)=(/1,0,3,0,0,0,0,0,0,2,1,0,3,2,1,0,1,1,3,0,3,0,1,1,3,0,3,3,1,1,2,2/)*pi/2;

integer,parameter::N1=32;
real data1(N1*4)

integer::ISIGN=1

do i=1,n1*2,2
data1(i)=1.0/((i+1)/2)
data1(i+1)=0
enddo
do i=2*n1+1,4*n1
data1(i)=0
enddo

print*,DATA1
call FOUR1(DATA1,64,ISIGN)

print*,DATA1

contains
	  SUBROUTINE FOUR1(DATA,nn,ISIGN)
! ISIGN:   -1:反变换 1: 正变换

      REAL*8   WR,   WI,   WPR,   WPI,   WTEMP,   THETA
      DIMENSION   DATA(2*NN)

       N = 2*NN
       J = 1
       DO 11 I = 1, N, 2
          IF(J.GT.I) THEN
             TEMPR = DATA(J)
             TEMPI = DATA(J+1)
             DATA(J) = DATA(I)
             DATA(J+1) = DATA(I+1)
             DATA(I) = TEMPR
             DATA(I+1) = TEMPI
          END IF
          M = N / 2
1         IF((M.GE.2).AND.(J.GT.M)) THEN
             J = J - M
             M = M / 2
             GO TO 1
          END IF
          J = J + M
11        CONTINUE
       MMAX = 2
2      IF(N.GT.MMAX) THEN
          ISTEP = 2 * MMAX
          THETA = 6.28318530717959D0 / (ISIGN*MMAX)
          WPR = -2.D0 * DSIN(0.5D0*THETA)**2
          WPI = DSIN(THETA)
          WR = 1.D0
          WI = 0.D0
          DO 13 M = 1,   MMAX, 2
             DO 12 I = M, N, ISTEP
                J = I + MMAX
                TEMPR = SNGL(WR) * DATA(J) - SNGL(WI) * DATA(J+1)
                TEMPI = SNGL(WR) * DATA(J+1) + SNGL(WI) * DATA(J)
                DATA(J) = DATA(I) - TEMPR
                DATA(J+1) = DATA(I+1) - TEMPI
                DATA(I) = DATA(I) + TEMPR
                DATA(I+1) = DATA(I+1) + TEMPI
12              CONTINUE
             WTEMP = WR
             WR = WR * WPR - WI * WPI + WR
             WI = WI * WPR + WTEMP * WPI + WI
13           CONTINUE
          MMAX = ISTEP
          GO TO 2
       END IF

       RETURN 
       END subroutine
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -