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