fcode 发表于 2017-12-13 10:50 多谢,多谢 |
|
看起来,似乎有2个问题。 1. 数组越界。你的数组是从 1:1001,但是循环从 0 开始到 1000,会越界。你使用的编译器没有检查出这个问题,你可以考虑换一个编译器。 2. 很奇怪的是,我觉得你的结果似乎没什么问题。但是你需要理解实序列的DFT,结果只有一半的频率是有效的。你可以把 X 换做频率,而非数据序数。与 orgin 的结果对比,就会差不多一致了。 另外,给你一个建议。如果你的代码里大量出现 1000 这个数字,对于将来修改,会是很困难的。建议你用一个整形常量表示,比如 Integer , parameter :: N = 1000 这样,将来容易修改,如下代码: [Fortran] 查看源码 复制源码 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 |
li913 发表于 2017-12-12 20:27 您好,相关文件已经显示在附件中 |
| 给出你的结果、期望结果、输入数据。 |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2025-12-14 05:10