爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4484|回复: 5

[程序设计] matlab函数求指导

[复制链接]
回帖奖励 12 金钱 回复本帖可获得 4 金钱奖励! 每人限 1 次(中奖概率 80%)
发表于 2018-5-24 14:53:24 | 显示全部楼层 |阅读模式

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

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

x
clear all
close all
a=[10,40,40,50,40,50,40,45,50,20,25,40,22,20,40,50,40,45,40,50,40,20,12,15];
b=a(:)>35;                  %b中绝对值大于35的逻辑矩阵
ind1=find(diff([0;b])==1);     %大于35的数的开始位置
ind2=find(diff([b;0])==-1);    %大于35的数的结束位置
mask=(ind2-ind1+1>=6);       %长度大于等于6个的连续
ind3=ind1(mask);                 %连续6个大于35的数的开始位置
ind4=ind2(mask);                 %连续6个大于35的数的结束位置
p=size(ind3,1);                    %发生频次
t=ind4-ind3+1;                      %每次持续的天数

我有这样一段matlab程序,因为我不太会用matlab处理nc数据,我搜这些函数对应的含义,但是matlab和ncl使用方法好像差挺多的,所以想找ncl里面对应的函数计算,希望会matlab和ncl的大神指点一下,谢谢!也可以推荐一下matlabchulinc数据快速入门的书籍或者帖子,谢谢啦

密码修改失败请联系微信:mofangbao
发表于 2018-5-24 15:09:52 | 显示全部楼层

回帖奖励 +4 金钱

不知道楼主什么意思
但是感觉楼主需要找到连续6天以上
给出建议就是所有元素进行0-1标记,然后前后做差,再找到两个差异点之间的间隙就是连续的天数了~
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2018-5-24 20:28:05 | 显示全部楼层
二爷名声在外 发表于 2018-5-24 15:09
不知道楼主什么意思
但是感觉楼主需要找到连续6天以上
给出建议就是所有元素进行0-1标记,然后前后做差, ...

谢谢,因为我没用过matlab所以可能要现学一下处理nc数据,因为ncl里面我也没找到相应的函数,我现在数据是year 50 x time 92 x lat 94 x lon 192,数据已经0-1处理了,现在想把time维找到连续3天或者大于3天的个数以及每次持续的时间间隔,就是知道每一格点、每一年有多少个连续3天及以上的,是不是应该ind1(i,j,k)=find(diff([0;a(i,:,j,k)]==1)这样的方式,循环年份和经纬度,不过感觉图片上的ind会自动生成一个对应find值的一维数组,我如果用循环的话,ind(i,j,k)也可以是一个数组吗?
密码修改失败请联系微信:mofangbao
发表于 2018-5-24 22:57:34 | 显示全部楼层

回帖奖励 +4 金钱

不太明白你的意思,数据格式也不是特别清楚。
你给出的那段程序首先没问题,就是查找a中连续35以上的值出现6次的起始位置
[ind ind4]每一行就是起始位置和结束位置
用到你自己数据上,你如果直接用你最上面放的程序,最好把你的time维提出来,转换成和a一样的格式,连续6次改成3次
ind(i,j,k)也可以是一个数组,只不过是三维的,这个各个软件应该区别不大
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2018-5-25 10:14:44 | 显示全部楼层
772615260 发表于 2018-5-24 22:57
不太明白你的意思,数据格式也不是特别清楚。
你给出的那段程序首先没问题,就是查找a中连续35以上的值出 ...

谢谢,因为我的数据是4维的,year x time x lat x lon,我要判断每一格点每一年有多少连续3天大于35的,我是想着用循环a(i,:,j,k)这样的方式提出time维来进行判断。图上的程序ind是根据实际结果自动变成了一维数组(数组有多少元素取决于实际数据),我如果用循环的话,就得ind1(i,j,k)=find(diff([0;a(i,:,j,k)]==1)这样来存储time维的一些起始位置,也就是ind(i,j,k)也可以对应生成一维数组是吧
密码修改失败请联系微信:mofangbao
发表于 2018-5-25 23:59:05 | 显示全部楼层
18021719881 发表于 2018-5-25 10:14
谢谢,因为我的数据是4维的,year x time x lat x lon,我要判断每一格点每一年有多少连续3天大于35的, ...

nc数据格式我不是特别清楚,不敢妄说,不过四维数据提的time提取出来弄成1维并不难,主要是你要记住你提取成一维的规则,和你的格点数据记得是如何对应就行
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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