爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 18021719881

[作图] ncl中计算热浪的频次

[复制链接]
发表于 2022-1-24 12:03:02 | 显示全部楼层
18021719881 发表于 2018-5-3 16:59
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]; ...

很有用!学到了!
先确定序列里面大于等于35的位置,和相对应的结束的位置,再来判断期间间隔有没有超过定义当中的“至少连续3天”,最终采用逻辑数组作为序列位置的索引,是很有用的!赞一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2022-3-7 20:10:26 | 显示全部楼层
LIqy 发表于 2022-1-24 12:03
很有用!学到了!
先确定序列里面大于等于35的位置,和相对应的结束的位置,再来判断期间间隔有没有超过 ...

ncl有直接确定所有大于35的函数嘛,还是一个一个循环if?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2022-3-7 21:04:29 | 显示全部楼层
wsx 发表于 2022-3-7 20:10
ncl有直接确定所有大于35的函数嘛,还是一个一个循环if?

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;                  %得到一个逻辑判断向量,如果大于等于35,为真(1)
ind1=find(diff([0;b])==1);     %大于35的数的起始位置
ind2=find(diff([b;0])==-1);    %大于35的数的结束位置
mask=(ind2-ind1+1>=3);       %长度连续大于等于3个的逻辑数组
ind3=ind1(mask);                 %连续3个大于等于35的数的开始位置
ind4=ind2(mask);                 %连续3个大于等于35的数的结束位置
p=size(ind3,1);            %发生次数
这个是我在气象家园上找的一个基本代码,只需要将a数组改一下,理解下下面的代码意义即可判断
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

发表于 2022-6-10 16:41:01 | 显示全部楼层
LIqy 发表于 2022-3-7 21:04
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;          ...

这个做法很巧妙,但是ncl里好像不能实现?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2022-6-11 11:40:04 | 显示全部楼层
wsx 发表于 2022-6-10 16:41
这个做法很巧妙,但是ncl里好像不能实现?

我是用MATLAB做的统计,但是ncl应该也可以实现~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2022-11-12 20:22:39 | 显示全部楼层
方莹红 发表于 2021-1-26 15:37
请问楼主最后问题解决了吗?我也想知道那个循环找到热浪日的代码应该怎么写

请问你找到了吗?我也想要这个算热浪日的代码
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-11-7 16:50:12 | 显示全部楼层
ncl怎么实现啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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