Fortran Coder

标题: 初学,求助‘有一组数据,统计各个区间内数据个数’的... [打印本页]

作者: likm1110    时间: 2015-3-7 09:11
标题: 初学,求助‘有一组数据,统计各个区间内数据个数’的...
本帖最后由 likm1110 于 2015-3-7 10:25 编辑

如 :: 一组数据:1.3;4.3;3;5.1;6.;7.6;8.;0.6;8.4;12.5;11.;。
希望统计[0,2),[2,4),[4,6),[6,8),[8,10),[10,12),[12,14)各个区间内的数据个数。
尝试三天了一直失败.....求帮助T T谢谢指教!
PS.实际的数据有上千个,希望给出一个通用的统计方法,谢谢!



作者: fcode    时间: 2015-3-7 11:53
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  real :: a(11) = (/1.3,4.3,3.,5.1,6.,7.6,8.,0.6,8.4,12.5,11./)
  write(*,*) '[0,2)区间共有:', count( (a>=0.and.a<2) ) , '个数'
  !// 其他请参考本句修改
End Program www_fcode_cn

作者: likm1110    时间: 2015-3-7 18:52
本帖最后由 likm1110 于 2015-3-8 10:03 编辑
fcode 发表于 2015-3-7 11:53
[mw_shl_code=fortran,true]Program www_fcode_cn
  Implicit None
  real :: a(11) = (/1.3,4.3,3.,5.1,6. ...

成功了,感谢!

作者: vvt    时间: 2015-3-7 21:16
写在文件里,然后读入。
作者: likm1110    时间: 2015-3-7 22:38
vvt 发表于 2015-3-7 21:16
写在文件里,然后读入。

.......1000多个数据分段统计......普通读取文件还是会的.......难道文件操作可以直接统计??谢谢......
作者: vvt    时间: 2015-3-7 23:31
第一步. 把数据写在文件里。
第二步,定义一个1000的数组。
第三步,从文件里读入这个数组。
第四步,count 函数统计。

作者: likm1110    时间: 2015-3-8 08:10
本帖最后由 likm1110 于 2015-3-8 10:02 编辑
vvt 发表于 2015-3-7 23:31
第一步. 把数据写在文件里。
第二步,定义一个1000的数组。
第三步,从文件里读入这个数组。

已经成功,谢谢!

作者: li913    时间: 2015-3-8 09:01
本帖最后由 li913 于 2015-3-8 09:30 编辑

1、如果统计区间是等间距的,可用如下代码
[Fortran] 纯文本查看 复制代码
program test
real a(1000) !假设有1000个数据
integer i, j, num(7) !假设7个统计区间[0,2),[2,4),[4,6),[6,8),[8,10),[10,12),[12,14)

open(10,file='1.txt')
num = 0
do i = 1, 1000
read(10,*) a(i)
j = a(i)/2.0 + 1
num(j) = num(j) + 1
end do
end program



2、如果统计区间不是等间距,且区间个数较多,应先对数据进行排序,然后统计各区间数据量。

作者: likm1110    时间: 2015-3-8 10:02
基本成功了,正确性还得对数据,但是已经可行,谢谢各位指点!
作者: vvt    时间: 2015-3-8 10:52
1000个数据做统计, count 函数一瞬间就能完成。不需要做额外的工作来优化。

倘若数据上了百万,再考虑优化。
作者: likm1110    时间: 2015-3-8 12:25
vvt 发表于 2015-3-8 10:52
1000个数据做统计, count 函数一瞬间就能完成。不需要做额外的工作来优化。

倘若数据上了百万,再考虑优 ...

恩。和学长的数据对上了。谢谢~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2