主题:[讨论]fortran读取数据格式的问题
田间阡陌
[专家分:30] 发布于 2011-06-16 10:06:00
我的程序如下:
1、编制子程序:FFT.F90——用于快速傅里叶变换
FPAC.F90——用于求傅里叶谱,功率谱和自相关系数
2、编制了主程序:MAIN.F90,内容如下:
!*****************************************************************************************
DIMENSION DATA(30000),F(15000),G(15000),R(15000)
DIMENSION FREQ(15000),TAU(15000)
!
open(5,file='ua0258.DAT')
open(6,file='OUTPUT.DAT')
!
!Do i=1,11
!read(5,*)
!enddo
!
READ(5,501) NN,DT,(DATA(M),M=1,NN)
CALL FPAC(NN,DATA,30000,DT,111,F,G,R,15000,NFOLD,DF)
!
DO 210 J=1,NFOLD
TAU(J)=REAL(J-1)*DT
FREQ(J)=J/(NFOLD*2)*DT
210 CONTINUE
!
WRITE (6,601) (MK-1,FREQ(MK),F(MK),G(MK),TAU(J),R(MK),MK=1,NFOLD)
STOP
!
501 FORMAT(T16,I5/T30,F5.3//8F15.11)
601 FORMAT(T35,'EXAMPLE WAVE'//T15,'--FOURIER, POWER SPECTRUM AND AUTOCORRELATION--'&
///T5,'M',TR3,'FREQUENCY',TR7,'FOURIER SPECTRUM',TR2,'POWER SPECTRUM',&
TR2,'TIME LAG',TR2,'AUTOCORRELATION'//(T5,I5,TR5,F10.3,TR5,F10.3,TR5,F10.3,&
TR5,F10.3,TR5,F10.3))
END
!*****************************************************************************************
3、读入的数据文件的格式如下:
NO. OF POINTS: 24256
EQUALLY SPACED INTERVALS OF: 0.005 SEC
-1.072970E-001 -1.072970E-001 -9.958957E-002 -9.958957E-002 -1.072970E-001 -1.034439E-001 -9.573565E-002 -1.034439E-001
-9.958957E-002 -1.034439E-001 -1.072970E-001 -9.958957E-002 -9.958957E-002 -1.111513E-001 -9.958957E-002 -9.958957E-002
-1.072970E-001 -1.034439E-001 -1.072970E-001 -1.072970E-001 -1.072970E-001 -9.958957E-002 -1.072970E-001 -1.111513E-001
4、现在出现的问题是,运行之后,报错显示主程序的第11行有错:input conversion error
论坛有没有高人肯指点一下,不胜感激,呵呵。
回复列表 (共9个回复)
沙发
田间阡陌 [专家分:30] 发布于 2011-06-16 10:10:00
说明:上面的数据格式,应该是1行8个,这里因为页面显示的问题,所以变成了这个怪样子。
板凳
aliouying [专家分:1150] 发布于 2011-06-16 10:27:00
格式化输出必须严格按照数据文件的格式来定义format
DIMENSION DATA(30000),F(15000),G(15000),R(15000)
DIMENSION FREQ(15000),TAU(15000)
!
open(15,file='C.DAT')
READ(15,501) NN,DT,(DATA(M),M=1,NN)
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/)8F15.11)
WRITE(*,*) NN, DT
write(*,*) (DATA(M),M=1,NN)
CLOSE(15)
END
C:\Documents and Settings\Administrator\桌面\a>ifort c.f90
Intel(R) Visual Fortran Compiler Professional for applications running on IA-32,
Version 11.1 Build 20100203 Package ID: w_cprof_p_11.1.060
C:\Documents and Settings\Administrator\桌面\a>c
24 4.9999999E-03
-0.1072970 -0.1072970 -9.9589571E-02 -9.9589571E-02 -0.1072970
-0.1034439 -9.5735647E-02 -0.1034439 -9.9589571E-02 -0.1034439
-0.1072970 -9.9589571E-02 -9.9589571E-02 -0.1111513 -9.9589571E-02
-9.9589571E-02 -0.1072970 -0.1034439 -0.1072970 -0.1072970
-0.1072970 -9.9589571E-02 -0.1072970 -0.1111513
3 楼
cgl_lgs [专家分:21040] 发布于 2011-06-16 10:32:00
前两个用格式化读入,剩下的使用无格式读入。
4 楼
田间阡陌 [专家分:30] 发布于 2011-06-18 10:32:00
先谢一个,感谢,呵呵
我用这个格式读入的时候,提示一个分隔符错误:
D:\Fortran\Spectral Analysis\FPAC-internet\MAIN.F90(22) : Error: A delimiter is missing or invalid. Any of the following delimiters are valid: , $ / : ) or end-of-format list. [8]
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/)8F15.11)
----------------------------------------------^
5 楼
田间阡陌 [专家分:30] 发布于 2011-06-18 10:41:00
谢谢。
你说的前面的用格式化读入,就是用format命令定义格式的形式,如:
READ(15,501) NN,DT
501 FORMAT(T16,I5/T30,F6.3)
那么无格式的就是:
READ(15,*) DATA(M),M=1,NN)
我有两个问题不太懂,需要各位指点一下:
1、如果这样分来来读入数据的话,我的NN,DT与后面的数据中间空一行,这个应该怎么处理,以保证在读入后面的数据时,能直接读入而不出错呢?
2、我在刚开始读入前面的NN和DT,是不是只是字符串,而不是我想要的整型、实型数据?如果这样的话,就必须要先对他们做数据类型转化,然后才能继续下面的循环?
6 楼
aliouying [专家分:1150] 发布于 2011-06-18 11:03:00
[quote]先谢一个,感谢,呵呵
我用这个格式读入的时候,提示一个分隔符错误:
D:\Fortran\Spectral Analysis\FPAC-internet\MAIN.F90(22) : Error: A delimiter is missing or invalid. Any of the following delimiters are valid: , $ / : ) or end-of-format list. [8]
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/)8F15.11)
----------------------------------------------^[/quote]
是不是你的右边括号有问题?
如果还不行,那就加个逗号吧
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/),8F15.11)
7 楼
田间阡陌 [专家分:30] 发布于 2011-06-19 10:44:00
[quote][quote]先谢一个,感谢,呵呵
我用这个格式读入的时候,提示一个分隔符错误:
D:\Fortran\Spectral Analysis\FPAC-internet\MAIN.F90(22) : Error: A delimiter is missing or invalid. Any of the following delimiters are valid: , $ / : ) or end-of-format list. [8]
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/)8F15.11)
----------------------------------------------^[/quote]
是不是你的右边括号有问题?
如果还不行,那就加个逗号吧
501 FORMAT(T16,I5/T30,F6.3//<NN/8-1>(8F15.11/),8F15.11)[/quote]
---------------------------------------------------------------------
这个很好,好了,可以了,谢谢。
8 楼
dbud [专家分:10] 发布于 2012-12-13 16:38:00
顶楼主
[url=http://www.bhlt99.com][color=#ffffff]西力士[/color][/url][color=#ffffff] www.bhlt99.com[/color]
[url=http://www.xinliangoil.com][color=#ffffff]希爱力[/color][/url][color=#ffffff]www.xinliangoil.com[/color]
[url=http://www.dl-tomorrow.com][color=#ffffff]万艾可[/color][/url][color=#ffffff]www.dl-tomorrow.com[/color]
[url=http://www.shmideakt.com][color=#ffffff]基因育根[/color][/url][color=#ffffff] www.shmideakt.com[/color]
[url=http://www.senboom.com][color=#ffffff]基因育根[/color][/url][color=#ffffff] www.senboom.com[/color]
[url=http://www.tbrenren.com][color=#ffffff]北京按摩[/color][/url][color=#ffffff] www.tbrenren.com[/color]
[url=http://www.zjjhgjg.com][color=#ffffff]电视棒[/color][/url][color=#ffffff] www.zjjhgjg.com[/color]
[url=http://www.hxww.net][color=#ffffff]超级P57[/color][/url][color=#ffffff] www.hxww.net[/color]
[url=http://www.wzeas.com][color=#ffffff]治疗白发[/color][/url][color=#ffffff]www.wzeas.com[/color]
9 楼
oleg [专家分:30] 发布于 2012-12-15 22:24:00
快速傅里叶变换FFT.F90能否分享下?!
我来回复