Fortran Coder
标题:
数据求和?
[打印本页]
作者:
kif117
时间:
2015-4-18 02:24
标题:
数据求和?
本帖最后由 kif117 于 2015-4-22 02:26 编辑
针对一个变量 c(k,i) 如何求将c(k,i)分成10个一列(k是数据个数10个,i是可以分成的列数),然后每列相加后输出成一列?
----------------
以及: 我想用(2,tn)的数减去(1,tn-1)的数(假设结果是Z),然后对Z进行一系列计算,并且提取Z的过程中不需要将Z保存起来。
Open(101,File='IDlista.dat', Status='old') ! filename (1,tn-1)
Open(201,File='IDlistb.dat', Status='old') ! filename (2,tn)
Do i=1,tn-1
Read (101,*,Iostat=ios) filename1
If (ios/=0) Exit
Open(200,File="D:\h\"//trim(adjustl(fn1))//trim(adjustl(filename1))//'.dat',status='old')
READ(200,*,IOSTAT=ios) a
IF( ios < 0 ) EXIT ! End of file
close(200)
Read (201,*,Iostat=ios) filename2
If (ios/=0) Exit
Open(200,File="D:\h\"//trim(adjustl(fn1))//trim(adjustl(filename2))//'.dat',status='old')
READ(200,*,IOSTAT=ios) b
IF( ios < 0 ) EXIT ! End of file
close(200)
是否有更简洁的办法完成该运算?
非常感谢!
作者:
woaichimian666
时间:
2015-4-28 18:02
不太理解楼主的变量是几维的啊,要不数据贴上来看看?
作者:
kif117
时间:
2015-4-28 18:27
woaichimian666 发表于 2015-4-28 18:02
不太理解楼主的变量是几维的啊,要不数据贴上来看看?
谢谢你的回复!
我之前有两重的循环
do m=...
do n=...
中坚很多运算步骤省略...
得到一个变量r(n)
我的想法是让它按照循环求平均: 不是数据相加后再平均summ=summ+sum(r)这种,是将数据分成几列后相加求平均,输出结果是一列。
比如r(n)是
1
2
3
4
5
6
7
8
分成两列的话是(1,2,3,4)+(5,6,7,8)这样,输出结果希望是(6,8,10,12)/2=(3,4,5,6)
我写了一个类似的求和,把r(m)作为下面的input(j,k) 变量
do i=1,filength
output(i) = 0
end do
open(200, file='finalresult.dat',status='unknown')
do k=1,filength
do j=1,tn
output(k) = output(k) + input(j,k)
end do
write(200, '(f12.6)')output(k)/tn
end do
放在前面的循环中输出是错误的。如果另外作为一个单独程序使用就可以。
恳请帮忙!
作者:
woaichimian666
时间:
2015-4-28 19:03
实在抱歉,新人小白,我没太看懂这个程序,麻烦你了==!,但是我的想法是取个中间变量传递一下。
而且你在前面声明数组的时候。如果申明了两个数组,相减的话,都是对应元素相减。那样就不用写循环。
不知道说蒙你没有,说蒙当我没说就好。
共同进步吧
欢迎光临 Fortran Coder (http://bbs.fcode.cn/)
Powered by Discuz! X3.2