Fortran Coder

查看: 8681|回复: 3
打印 上一主题 下一主题

[数值问题] 数据求和?

[复制链接]

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
跳转到指定楼层
楼主
发表于 2015-4-18 02:24:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)

是否有更简洁的办法完成该运算?

非常感谢!





分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

9

帖子

2

主题

0

精华

入门

F 币
65 元
贡献
36 点
沙发
发表于 2015-4-28 18:02:49 | 只看该作者
不太理解楼主的变量是几维的啊,要不数据贴上来看看?

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
板凳
 楼主| 发表于 2015-4-28 18:27:19 | 只看该作者
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

放在前面的循环中输出是错误的。如果另外作为一个单独程序使用就可以。

恳请帮忙!

9

帖子

2

主题

0

精华

入门

F 币
65 元
贡献
36 点
地板
发表于 2015-4-28 19:03:53 | 只看该作者
实在抱歉,新人小白,我没太看懂这个程序,麻烦你了==!,但是我的想法是取个中间变量传递一下。
而且你在前面声明数组的时候。如果申明了两个数组,相减的话,都是对应元素相减。那样就不用写循环。
不知道说蒙你没有,说蒙当我没说就好。
共同进步吧
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-22 12:00

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表