在計(jì)算兩幅圖像像元水平上的相關(guān)性時淮腾,由于圖像的分辨率高稍算,導(dǎo)致直接畫散點(diǎn)圖根本就體現(xiàn)不出來大致的趨勢,因此需要用密度散點(diǎn)圖來進(jìn)行刻畫警没。散點(diǎn)密度圖的核心是在x和y的范圍內(nèi)找到在這個范圍內(nèi)的點(diǎn)的數(shù)量葫哗,需要合理選擇x和y的區(qū)間缔刹。
首先本文這里以兩幅ET的數(shù)據(jù)作為樣例,分辨率為1000m劣针,值的區(qū)間再8到1100校镐,兩者的最大差距不超過800,選擇以5作為兩幅圖像的間隔,提取如下代碼
% author yinlichang3064@163.com
filemean='I:\蒸散發(fā)\各ET的均值和趨勢\yr_SSEB_2003-2013年ET的均值.tif';
sseb=importdata(filemean);
filemean='I:\蒸散發(fā)\各ET的均值和趨勢\yr_SSEBopYRB_2003-2013年ET的均值.tif';
ssebop=importdata(filemean);
sy1=find(sseb>0 & ssebop>0); %找到兩者的有效值
sseb_1=double(sseb(sy1));
ssebop_1=double(ssebop(sy1));
valuesum=zeros(47961,3); %以47961是因?yàn)?:5:1100的長度為219,219的平方為47961
k=1;
for i=8:5:1100 %sseb
sy=find(sseb_1>=i & sseb_1<i+5);
j1=i+800;
j2=i-800;
if j1>1100
j1=1100;
end
if j2<8
j2=8;
end
for j=j2:5:j1 %ssebop
sy2= find(ssebop_1>=j & ssebop_1<j+5);
sy3=intersect(sy,sy2);
cd=length(sy3);
if length(cd)>0
value=[i,j,cd];
valuesum(k,:)=value;
end
k=k+1;
end
end
通過上述代碼就可以得到valuesum變量捺典,該變量中第一列存儲的是sseb的值鸟廓,第二列是ssebop的值,第三列是兩幅圖像處于這個區(qū)間的值的數(shù)量。通過scatter函數(shù)即可以畫出散點(diǎn)密度圖引谜,但較為粗糙牍陌,需要對圖像進(jìn)行修飾,采用如下代碼
% author yinlichang3064@163.com
set(gcf,'Units','centimeters','Position',[6 6 14 13]); %設(shè)置圖像位置和大小
valuesum_sseb=valuesum(valuesum(:,3)>0,:);
scatter(valuesum_sseb(:,1),valuesum_sseb(:,2),[],valuesum_sseb(:,3),'.')
set(gca,'Xlim',[0,1100],'Ylim',[0,1100],'XTick',[0:300:1100],'YTick',[0:300:1100])
ylabel('ET_S_S_E_B_o_p_Y_R_B','Fontname', 'Times New Roman','FontSize',12); %下標(biāo)
hold on
h1=refline(1,0) %輔助1:1線
h2=refline(0.3428,284.4) %擬合線獲取
set(h1,'color','black','linewidth',1.5)
set(h2,'color','red','linewidth',1.5)
text(100,1000,'R^2=0.51')
text(100,900,'N=798125')
text(800,100,'ET_S_S_E_B_o_p_G_l_o')
運(yùn)行效果如下圖所示
想輸出高分辨圖像员咽,采用文件-導(dǎo)出設(shè)置毒涧,在該對話框中采用渲染工具,并設(shè)置分辨率為600贝室,然后導(dǎo)出為jpg格式即可契讲,單個圖像的話可以增加colorbar,具體設(shè)置如下档玻,直接在最后一行加上這句
colorbar([0.91 0.11 0.03 0.81])
顏色表征了數(shù)量的多少,紅色表示擬合線怀泊,黑色表示1:1的線下圖是用另外數(shù)據(jù)同樣流程制作的。
跟多需求误趴,請查看個人介紹