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, 2024-11-23 02:41