主题:求助:取平均值
yinghu
[专家分:0] 发布于 2011-06-12 20:42:00
哪位大侠能帮这个数据帮我平均一下啊,
4700 -0.31122100 26.54010010 430.17498779 569.35101318 569.35101318
4700 -0.37442699 23.21050072 422.27200317 569.35101318 569.35101318
4650 -0.15715100 19.74990082 423.68399048 569.35101318 569.35101318
4650 0.87752903 17.76580048 414.14700317 569.35101318 569.35101318
4600 0.81266898 17.35409927 305.35900879 499.44900513 539.21197510
4600 0.87766898 14.66569996 296.75399780 496.72601318 538.68798828
4550 -1.01847994 17.40889931 414.89001465 576.65002441 576.65002441
4550 -0.86241102 15.07740021 405.93099976 576.65002441 576.65002441
4500 3.07746005 25.38229942 584.13897705 584.13897705 584.13897705
4500 -5.00048018 13.01430035 584.13897705 584.13897705 584.13897705
4500 -2.10417008 12.71689987 584.13897705 584.13897705 584.13897705
相同点号的取平均 每个点重复的次数不等 有2 3 1次的 谁能帮实现一下啊,从第二列开始往后是1000列 我简化成5列是为了简单明了,谢谢!
回复列表 (共9个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-06-12 22:51:00
如果相同点号是连续的,那就简单,如果不连续其实也不难,只是费内存:)
板凳
yinghu [专家分:0] 发布于 2011-06-13 00:41:00
就是这样的啊 连续 帮我考虑一下呗,谢谢
3 楼
cgl_lgs [专家分:21040] 发布于 2011-06-13 08:36:00
两重循环,外重是判断到结尾为止,内重读到不一样的点号为止。
整一个数组为A(2,5000),另一个为点号数组JN(2),点个数N
读时读到JN(1),A(1,:)中,累加到A(2,:)中。
内重循环结束后将A(2,:)除以N并写到新文件中。
4 楼
bshine1225 [专家分:720] 发布于 2011-06-13 09:19:00
一次性读取1000列不知道fortran能否实现?
5 楼
yinghu [专家分:0] 发布于 2011-06-13 09:38:00
肯定能啦 我这1000列是用fortran写进去的 你说能否行啊?
6 楼
cgl_lgs [专家分:21040] 发布于 2011-06-13 12:07:00
呵呵,不好意思,看错了,要定义的是A(2,1000)我看成5000了:)
读肯定能读,楼主先照着思路写写看,如果遇到问题可以再问哈:)
7 楼
yinghu [专家分:0] 发布于 2011-07-05 15:14:00
Do k = 1 , NPoint
do while(Point(k)=Point(k+1))
----
enddo
EndDo
你好 还是写不出来 NPoint是总行数 Point(k)是点号 望指点
8 楼
yinghu [专家分:0] 发布于 2011-07-07 14:35:00
你好 最近没在线吗
9 楼
cgl_lgs [专家分:21040] 发布于 2011-07-07 23:46:00
real(8) a(2,1000)
open(11,file='dat.in')
open(22,file='dat.out')
read(11,iostat=nstat,*)pt,a(1,:)
do
k=1
if(nstat.ne.0)exit
do
read(11,iostat=nstat,*)pt1,a(2,:)
if(nstat.ne.0.or.pt1.ne.pt)exit
a(1,:)=a(1,:)+a(2,:)
k=k+1
end do
a(1,:)=a(1,:)/k
write(22,*)pt,a(1,:)
a(1,:)=a(2,:)
end do
先凑合着看吧,没测试过,不保证没有BUG:)
我来回复