复数数据读取
PROGRAM FMMMIMPLICIT NONE
INTEGER I,J,K,ERROR,BBB,B,AA,BB
REAL P0(360000),P1(360000),P2(360000),P3(360000),P4(360000),P5(360000),P6(360000),LEG0(5000,72),LEG1(5000,72),LEG2(5000,72),LEG3(5000,72),LEG4(5000,72),LEG5(5000,72),LEG6(5000,72)
COMPLEX HANKEL0(5000),HANKEL1(5000),H(7,5000),HH(7,5000)
OPEN(UNIT=30,FILE="HHKR_0.TXT")
READ(30,*) HANKEL0
OPEN(UNIT=66,FILE="P0.TXT")
READ(66,*) P0
OPEN(UNIT=68,FILE="P1.TXT")
READ(68,*) P1
OPEN(UNIT=70,FILE="P2.TXT")
READ(70,*) P2
OPEN(UNIT=72,FILE="P3.TXT")
READ(72,*) P3
OPEN(UNIT=76,FILE="P4.TXT")
READ(76,*) P4
OPEN(UNIT=78,FILE="P5.TXT")
READ(78,*) P5
OPEN(UNIT=82,FILE="P6.TXT")
READ(82,*) P6
DO AA=1,5000
DO BB=1,72
LEG0(AA,BB)=P0(BB+(AA-1)*72)
LEG1(AA,BB)=P1(BB+(AA-1)*72)
LEG2(AA,BB)=P2(BB+(AA-1)*72)
LEG3(AA,BB)=P3(BB+(AA-1)*72)
LEG4(AA,BB)=P4(BB+(AA-1)*72)
LEG5(AA,BB)=P5(BB+(AA-1)*72)
LEG6(AA,BB)=P6(BB+(AA-1)*72)
ENDDO
ENDDO
OPEN(UNIT=90,FILE="L6.TXT")
WRITE(90,*) LEG6
PAUSE
STOP
END
求助,之前同样做的文件数据较少时可以顺利执行。现在TXT文件有5000个复数数据就读不出来了~~
图片是文件的数据格式
程序可以执行。就是在READ那里出现,断点,黑框闪退 你需要使用格式读取 ,* 读取是肯定不行的。
我就不知道为啥你数据少的时候可以,我觉得1个数据你也读不出来。 fcode 发表于 2014-5-22 21:21
你需要使用格式读取 ,* 读取是肯定不行的。
我就不知道为啥你数据少的时候可以,我觉得1个数据你也读不出 ...
我用 READ(30,"(F18.17,F18.17)") HANKEL 也不行啊 开颜儿 发表于 2014-5-22 21:25
我用 READ(30,"(F18.17,F18.17)") HANKEL 也不行啊
当然不行,你根本没考虑加减号问题。
即便是使用格式,也应该是
real :: ra , rb
character(len=1) :: sign
read( 30 , "(f17.15,1x,a1,1x,f17.15)" ) ra , sign , rb
if(sign=='-') rb = 0 - rb
hankel = cmplx(ra,rb)
这样才对。如果你的数据里,实部是负数,你还需要结合实际情况进行考虑。
所以你的数据格式是很变态的。
另外,求助时,该截图,还是该复制粘贴,这很有技巧,要考虑回答人的感受。比如数据,你就应该复制粘贴,而不是截图。你知道其他人一个一个数数字的位数,多难受么?
更完善的读取方法请参考:
http://fcode.cn/bbs/thread-167-1-2.html 你这hankel系数有点多吧,而且居然是复数? vvt 发表于 2014-5-23 01:38
当然不行,你根本没考虑加减号问题。
即便是使用格式,也应该是
谢谢啦~我试试 不好意思,第一次发帖不懂,见谅 aliouying 发表于 2014-5-23 14:16
你这hankel系数有点多吧,而且居然是复数?
恩,5000个复数,我也在考虑是不是数据量太大 vvt 发表于 2014-5-23 01:38
当然不行,你根本没考虑加减号问题。
即便是使用格式,也应该是
还想请教一下。实部有复数也得IF考虑一下符号吗 vvt 发表于 2014-5-23 01:38
当然不行,你根本没考虑加减号问题。
即便是使用格式,也应该是
你好,我试了一下您帮助我的代码,但是只读进去第一行额,请问我是哪里还不对吗
+,-号问题可以这样吗read(30,"(a1,f17.15,1x,a1,1x,f17.15)" )sign1, ra , sign , rb
if(sign=='-') rb = 0 - rb
if(sign1=='-') ra = 0 - ra
页:
[1]
2