回 帖 发 新 帖 刷新版面

主题:[讨论]fortran读取数据格式的问题

我的程序如下:

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个回复)

沙发

说明:上面的数据格式,应该是1行8个,这里因为页面显示的问题,所以变成了这个怪样子。

板凳

格式化输出必须严格按照数据文件的格式来定义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 楼

前两个用格式化读入,剩下的使用无格式读入。

4 楼

先谢一个,感谢,呵呵
我用这个格式读入的时候,提示一个分隔符错误:

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 楼

谢谢。

你说的前面的用格式化读入,就是用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 楼

[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 楼

[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 楼

顶楼主
[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 楼

快速傅里叶变换FFT.F90能否分享下?!

我来回复

您尚未登录,请登录后再回复。点此登录或注册