Fortran Coder

查看: 20642|回复: 10
打印 上一主题 下一主题

[数值问题] 初学,求助‘有一组数据,统计各个区间内数据个数’的...

[复制链接]

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

跳转到指定楼层
楼主
发表于 2015-3-7 09:11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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.实际的数据有上千个,希望给出一个通用的统计方法,谢谢!


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

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-3-7 11:53:30 | 只看该作者
[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

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

板凳
 楼主| 发表于 2015-3-7 18:52:00 | 只看该作者
本帖最后由 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. ...

成功了,感谢!

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2015-3-7 21:16:14 | 只看该作者
写在文件里,然后读入。

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

5#
 楼主| 发表于 2015-3-7 22:38:45 | 只看该作者
vvt 发表于 2015-3-7 21:16
写在文件里,然后读入。

.......1000多个数据分段统计......普通读取文件还是会的.......难道文件操作可以直接统计??谢谢......

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
6#
发表于 2015-3-7 23:31:13 | 只看该作者
第一步. 把数据写在文件里。
第二步,定义一个1000的数组。
第三步,从文件里读入这个数组。
第四步,count 函数统计。

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

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

已经成功,谢谢!

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
8#
发表于 2015-3-8 09:01:16 | 只看该作者
本帖最后由 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、如果统计区间不是等间距,且区间个数较多,应先对数据进行排序,然后统计各区间数据量。

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

9#
 楼主| 发表于 2015-3-8 10:02:21 | 只看该作者
基本成功了,正确性还得对数据,但是已经可行,谢谢各位指点!

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
10#
发表于 2015-3-8 10:52:15 | 只看该作者
1000个数据做统计, count 函数一瞬间就能完成。不需要做额外的工作来优化。

倘若数据上了百万,再考虑优化。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 07:32

Powered by Tencent X3.4

© 2013-2024 Tencent

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