基于matlab的逐像元偏相关分析

本文介绍基于matlab的逐像元的三者间的偏相关,以产水,NPP和土壤保持为例进行说明
具体代码如下:

%将三者多年的数据放在三个不同的矩阵中
[a,R]=geotiffread('F:\校级课题项目\data\屏障带\2002water_yield.tif');%先导入投影信息
info=geotiffinfo('F:\校级课题项目\data\屏障带\2002water_yield.tif');
nppsum=zeros(size(a,1)*size(a,2),16);
for year=2000:2015
    filename=strcat('F:\校级课题项目\data\屏障带\',int2str(year),'npp.tif');
    data=importdata(filename);
    data=reshape(data,size(a,1)*size(a,2),1);
    nppsum(:,year-1999)=data;
end
scsum=zeros(size(a,1)*size(a,2),16);
for year=2000:2015
    filename=strcat('F:\校级课题项目\data\屏障带\',int2str(year),'sc.tif');
    data=importdata(filename);
    data=reshape(data,size(a,1)*size(a,2),1);
    scsum(:,year-1999)=data;
end
wcsum=zeros(size(a,1)*size(a,2),16);
for year=2000:2015
    filename=strcat('F:\校级课题项目\data\屏障带\',int2str(year),'water_yield.tif');
    data=importdata(filename);
    data=reshape(data,size(a,1)*size(a,2),1);
    wcsum(:,year-1999)=data;
end
%控制NPP,看产水和土壤保持的偏相关
rho_value=zeros(size(a,1),size(a,2))+nan;
p_value=zeros(size(a,1),size(a,2))+nan;
for i=1:size(a,1)*size(a,2)
      nppdata=nppsum(i,:);
      if min(nppdata)>0
            nppdata=nppdata';
            scdata=scsum(i,:)';
            wcdata=wcsum(i,:)';
            [rho,p]=partialcorr(scdata,wcdata,nppdata);%注意,控制的变量放在最后面
            rho_value(i)=rho;
            p_value(i)=p;
      end
end
rho_value(p_value>0.05)=NaN;
filename='F:\课题项目\data\通过显著性0.05检验的产水和土壤保持偏相关系数.tif';
geotiffwrite(filename,rho_value,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);

更多需求,请查看个人介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • 我静静的度过了又一个生日。 坐在公共汽车上看着向后倒退的人们,感受到有多少人都在与我擦肩而过! 从小的时候...
    hmdnh1阅读 2,870评论 0 0
  • 001放下那颗评判心当你把手放在键盘上的时候,那个评判的小人就出现了,每打错一个字,都会想回去看看前面所打下的,一...
    陈效林阅读 1,092评论 1 0
  • 年年岁岁花貌似,岁岁年年理相通——2016年高考语文作文试题综评 高考作文命题特点 关注社会现实,激发深度思考 1...
    EndurerAmer阅读 4,837评论 0 2