PROGRAM FOURIER
IMPLICIT NONE
REAL(4)::DT,T,FCT
CHARACTER::U
INTEGER::I,W
REAL(4),DIMENSION(1001)::CT
OPEN(12,FILE='VACFHI.txt')
OPEN(13,FILE='FT.txt')
DO I=0,1000
READ(12,*)U,CT(I)
ENDDO
DO W=0,1000
DT=0.012
T=0
FCT=0
DO I=0,1000
IF (T.LT.1001) THEN
FCT=FCT+2*(CT(I)*COS(W*T)*DT)
T=T+DT
ENDIF
ENDDO
WRITE(13,*)W/(0.012/1000)*33,FCT
ENDDO
CLOSE(12)
CLOSE(13)
END
草图.png (70.06 KB, 下载次数: 248)
左上输入文件图,右上傅里叶变换图,左下origin做的FFT
30.3 KB, 下载次数: 3
傅里叶变换后输出
36.17 KB, 下载次数: 1
读取的文件
li913 发表于 2017-12-12 20:27
给出你的结果、期望结果、输入数据。
program fourier
implicit none
real(4)::dt,t,fct
character::u
integer::i,w
Integer , parameter :: N = 1000
real(4),dimension(0:N)::ct
open(12,file='vacfhi.txt')
open(13,file='ft.txt')
do i=0,N
read(12,*)u,ct(i)
enddo
do w=0,N
dt=0.012
t=0
fct=0
do i=0,N
!if ( t <(N+1) ) then
fct=fct+2*(ct(i)*cos(w*t)*dt)
t=t+dt
!endif
enddo
write(13,*)w/(0.012/N)*33,fct
enddo
close(12)
close(13)
end
fcode 发表于 2017-12-13 10:50
看起来,似乎有2个问题。
1. 数组越界。你的数组是从 1:1001,但是循环从 0 开始到 1000,会越界。你使用的 ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |