爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5399|回复: 5

matlab计数问题

[复制链接]

新浪微博达人勋

发表于 2014-5-18 18:42:48 | 显示全部楼层 |阅读模式
MATLAB
问题截图: -
问题概况: matlab计数问题
我看过提问的智慧: 看过
自己思考时长(天): 1
系统平台:

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
有两列数据,第一列是年份,第二列是降水量(每天),就是类似如下数据:
1961  200
1961  30
……
1961  2
1962  0
1962  30
……

在matlab中,如何做到计算各个年份中降水量大于0,小于32700(32700-降水为微量时的表达)的天数
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-18 18:48:45 | 显示全部楼层
就是想实现表达例如:
当t=1961时,x为txt文档中第一列为1961时,第二列的数据,然后计数x中有多少是满足大于0,小于32700。然后按照每个年份各自有多少个满足条件的x这样的情况输出~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-18 19:27:27 | 显示全部楼层
data(data==32700)=0;
data(data~=0)=1;
% assume that your data contains 50 years and started from 1961
TDim=50; startYear=1961;
Result=zeros([TDim 1]);
% count rainfall days by a for loop
for i=1:TDim
    initial=datenum(startYear+i-1, 1, 1)-datenum(startYear, 1, 1)+1;
    final=datenum(startYear+i-1, 12, 31)-datenum(startYear, 1, 1)+1;
    Result(i)=sum(data(initial:final, 2));
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-18 19:32:11 | 显示全部楼层
沙颖凯 发表于 2014-5-18 19:27
data(data==32700)=0;
data(data~=0)=1;
% assume that your data contains 50 years and started from 1 ...

试了下可以~~非常感谢~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-18 19:33:57 | 显示全部楼层
取出降水量那列设为x,则
1.sum((x>0)&(x<32700))(生成一个与x相同维数的向量,满足>0及<32700的数赋值为1,不满足为0,求和统计生成的判断向量总共有多少个1);
2.length(find((x>0)&(x<32700)))(返回满足>0及<32700数标号构成的向量,用length统计一下这个向量有多少个元素就可以了)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-5 14:51:52 | 显示全部楼层
不用那么复杂,直接用find命令就可以了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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