首页 > 其他分享 >MATLAB两类栅格数据之间的相关性计算

MATLAB两类栅格数据之间的相关性计算

时间:2024-10-08 10:54:51浏览次数:3  
标签:grw end 栅格数据 MATLAB year tif data npp 相关性

两类栅格数据之间的相关性计算(输出为tif影像)

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

栅格影像行列号需要一致,行列号不一致可以在ArcGIS中批量处理:
1.重采样
2.裁剪 右键空白 环境设置
重采样
裁剪
处理完毕后,进行相关分析。

Matlab代码-年

[a,R]=geotiffread('F:\SMC_V3.0\std_anlisyt\annual\x\FP_FVC_2013.8_class.tif_clp.tif');%先导入投影信息,某个影像的路径就行(最好是你分析的数据中的一个)
info=geotiffinfo('F:\SMC_V3.0\std_anlisyt\annual\x\FP_FVC_2013.8_class.tif_clp.tif');%同上
[m,n]=size(a);

nppsum=zeros(m*n,8);%此处要修改,共几年就填写多少,我这里是8年的
for year=2013:2020
    filename=strcat('F:\yz\FVC-time\2013-2020-FVC-time\Re-FVC-time\FVC_farm_perfect-clip\','FP_FVC_',int2str(year),'.8_class.tif_clp.tif');%此处要修改,我这里是八年的每年年均植被覆盖度的数据,注意你的文件名字。
    data=importdata(filename);
    data=reshape(data,m*n,1);
    nppsum(:,year-2012)=data;%此处需要修改,我的数据是从2013开始,此处就为2012.
end

wcsum=zeros(m*n,8);
for year=2013:2020
    filename=strcat('F:\yz\YZ-Date\temperature_date\MOD11B3\autumn(9,10,11)\sample_clip\',int2str(year),'244.sample.tif_clp.tif');%此处要修改,我这里是八年的每年年均地表温度的数据,注意你的文件名字。
    data=importdata(filename);
    data=reshape(data,m*n,1);
    wcsum(:,year-2012)=data;
end

%相关性和显著性
npp_wc_xgx=zeros(m,n);
npp_wc_p=zeros(m,n);
for i=1:length(nppsum)
    npp=nppsum(i,:);
    if min(npp)>0 %注意这里的NPP的有效范围是大于0,如果自己的数据有效范围有小于0的话,则可以不用加这个
        wc=wcsum(i,:);
         [r2,p2]=corrcoef(npp,wc);
         npp_wc_xgx(i)=r2(2);
         npp_wc_p(i)=p2(2);
    end
end

filename5='F:\yz\YZ-Date\temperature_date\MOD11B3\autumn(9,10,11)\std\相关性_LST秋季节尺度.tif';%此处要修改,输出的路径及名字
filename6='F:\yz\YZ-Date\temperature_date\MOD11B3\autumn(9,10,11)\std\显著性_LST秋季节尺度.tif';%同上


%%输出图像
geotiffwrite(filename5,npp_wc_xgx,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
geotiffwrite(filename6,npp_wc_p,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);


参考程序来源于:参考链接

Matlab代码-月

%先导入投影信息,某个影像的路径就行(最好是你分析的数据中的一个)
[a,R]=readgeoraster('G:\SIF\Global-AI_monthly_v3\bi\199001.tif');
info=geotiffinfo('G:\SIF\Global-AI_monthly_v3\bi\199001.tif');
[m,n]=size(a);
i=1;
 
gw=zeros(m*n,24); 
%此处要修改,共多少个月就写多少个月,我这里一共51个月,gw是我自己的变量名,可以根据需求修改
 
    for year=1990:1991
        for month=1:12
        filename=strcat('G:\SIF\Global-AI_monthly_v3\bi\',int2str(year),num2str(month,'%02d'),'.tif');
        %上述是文件名字的写法,我这里的例子是YYYYMM,根据自己文件命名修改
        data=importdata(filename);
        data=reshape(data,m*n,1);
        gw(:,i)=data; 
        i=i+1;
        end
    end
   
    % 可以看出每一年只挑选3-5月份的数据,用的双层循环,如果是每年的十二个月,就month=1:12
 
i=1;  %前面一个参数,下面导入另一个参数rssm,这里需要重新命i=1!
rssm=zeros(m*n,24);
   for year=1990:1991
        for month=1:12
        filename=strcat('G:\GPP_he\npp\test\',int2str(year),num2str(month,'%02d'),'.tif');
        data=importdata(filename);
        data=reshape(data,m*n,1);
        rssm(:,i)=data; 
        i=i+1;
        end
   end
%求相关性和显著性
 
grw_sm_xgx=zeros(m,n);
grw_sm_p=zeros(m,n);
for tl=1:length(gw)     %tl=timeline 时间长度,其实就是前面的51.
    grw=gw(tl,:);
    ssm=rssm(tl,:);
    [r2,p2]=corr(grw',ssm','type',"Pearson"); 
    %这里可以选自己想要的相关性,有三种。常用Pearson
    grw_sm_xgx(tl)=r2;
    grw_sm_p(tl)=p2;
end
 
filename1='G:\SIF\Global-AI_monthly_v3\result\相关性.tif';   %相关性
filename2='G:\SIF\Global-AI_monthly_v3\result\显著性.tif';   %显著性
 
%输出图像
geotiffwrite(filename1,grw_sm_xgx,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
geotiffwrite(filename2,grw_sm_p,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);

参考

标签:grw,end,栅格数据,MATLAB,year,tif,data,npp,相关性
From: https://blog.csdn.net/qq_51099081/article/details/142752985

相关文章

  • 各种排序算法相关性质整理
    排序算法稳定性最优时间复杂度平均时间复杂度最坏时间复杂度空间复杂度选择排序不稳定\(O(N^2)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)冒泡排序稳定\(O(N)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)插入排序稳定\(O(N)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)计数排序......
  • PAIRDISTILL: 用于密集检索的成对相关性蒸馏方法
    在当今海量数据时代,有效的信息检索(IR)技术对于从庞大数据集中提取相关信息至关重要。近年来,密集检索技术展现出了相比传统稀疏检索方法更加显著的效果。现有的方法主要从点式重排序器中蒸馏知识,这些重排序器为文档分配绝对相关性分数,因此在进行比较时面临不一致性的挑战。为......
  • MATLAB|基于多主体主从博弈的区域综合能源系统低碳经济优化调度
    目录主要内容   程序亮点:  模型研究   一、综合能源模型二、主从博弈框架  部分代码     结果一览   下载链接主要内容   程序参考文献《基于多主体主从博弈的区域综合能源系统低碳经济优化调度》,采用了区域综合能源系统多主体博弈协同优化......
  • 数学建模与数学实验课后习题答案 3.4.8 matlab实现
    完成日期2024年10月1题目8.已知某工厂计划生产1,2,3三种产品,各产品需要在ABC设备加工。有关数据如下:1 2 3 每月设备有效台时A 8 2 10 300B 10 5 8 400C 2 13 10 420单位产品利润/千元 3 2 2.9(1).如何发挥生产能力,使生产盈利最大?(2).若为增加产量,可借用设......
  • 2023-11-25 Matlab和Python在气象中的常用代码 180401
    目录画图横坐标添加月份PythonMatlab画图横坐标添加月份Pythonimportmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnp#准备时间和温度数据start_date=pd.to_datetime('1996-12-01')#thenextdateend_date=pd.to_datetime('1998-12-01')#the......
  • 基于无线传感器网络的节点分簇算法matlab仿真
    1.程序功能描述对传感器网络进行分簇,在分簇过程中考量的有节点能量状态、节点拓扑位置、孤立节点删除等条件。与LEACH算法比较,对比如下几个方面指标:1.网络从初始状态直到首个节点因能量耗尽而死亡的持续时间。2.显示了随着时间的变化,一些节点开始死亡,整个网络的可用率下......
  • 小白上手Arcgis—用于结合Netlogo、matlab等进行复杂网络操作
    小白上手Arcgis(Netlogo复杂网络数据预处理)1.前言  废话:昨天突然想到可以写一下博客,用来记录一下自己的工作,主要是涉及复杂网络方面。  情况简介:本人Arcgis小白,之前只是略微知道有这么个软件,以及知道怎么打开软件。学渣一个,而且不是学gis方向的,但由于工作需要,要对gis数据......
  • 智源:LLM训练过程中的指令相关性
    ......
  • 二维环境下的TDOA测距定位的MATLAB代码,带中文注释(附下载链接)
    文章目录程序介绍概述代码结构代码获取四个锚节点的情况n个锚节点自适应的情况程序介绍概述本MATLAB程序实现了基于时间差到达(TDOA)技术的二维测距定位,能够处理4个或任意数量(大于3个)的锚节点。在无线定位和导航系统中,TDOA是一种常用的定位方法,通过测量信号从未知点......
  • 【完美复现】基于多智能体系统一致性算法的电力系统分布式经济调度策略(Matlab代码实现
    ......