200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【Matlab】 多年NDVI数据的sen趋势分析

【Matlab】 多年NDVI数据的sen趋势分析

时间:2023-01-19 05:09:31

相关推荐

【Matlab】 多年NDVI数据的sen趋势分析

具体内容及详细教程请关注微信公众号:夫也的笔记

最近老师在课上安排了一个汇报作业,要求对某一地区的多年NDVI数据进行趋势分析,对于小白的我来说,真是!唉!但是功夫不负有心人,在我充分利用百度搜索、谷歌搜索和Bing搜索后,终于让我找到了相关教程和知识。只是需要用Matlab软件进行一系列操作,废话不多说上代码。

趋势分析有很多种,今天介绍的是Theil-Sen median趋势分析,一般还要结合Mann-Kendall建议,这个MK检验后续文章会写。

Theil-Sen median趋势分析是一种稳健的非参数计算方法,计算式如下

公式中SET指计算n(n-1)/2 个数据组合的斜率的中位数,ETi和ETj代表i和j年的ET值。如果SET>0,则ET呈上升趋势,否则,ET呈下降趋势。

Matlab具体代码如下:

​% @author 1154318421@[a,R]=geotiffread('E:\GIS\NDVI\2000.tif');%先导入投影信息info=geotiffinfo('E:\GIS\NDVI\2000.tif');[m,n]=size(a);cd=-2000+1;%时间跨度,根据需要自行修改datasum=zeros(m*n,cd)+NaN; k=1;for year=2000: %起始年份filename=['E:\GIS\ENVI\xinjiang',int2str(year),'2000.tif'];data=importdata(filename);data=reshape(data,m*n,1);datasum(:,k)=data;k=k+1;endresult=zeros(m,n)+NaN;for i=1:size(datasum,1)data=datasum(i,:);if min(data)>0 %判断是否是有效值,我这里的有效值必须大于0valuesum=[];for k1=2:cdfor k2=1:(k1-1)cz=data(k1)-data(k2);jl=k1-k2;value=cz./jl;valuesum=[valuesum;value];endendvalue=median(valuesum);result(i)=value;endendfilename=['E:\GIS\基于SEN的NDVI变化趋势.tif'];geotiffwrite(filename,result,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag)在这里插入代码片

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。