利用Matlab 对光谱数据的分析

 数据的排列: 横: 样本个数  纵:光谱数据(350:2500)

一 、数据导入Matlab

数据导入的两种方法:

1) 1----2

2)3 (即在空白工作区内 点击右键---新的空白文件夹---双击点开---直接将数据粘贴进去)

注意:数据导入过程中不要导入编号,只导入需要的数据,例如: 42个样本数据,350-2500的光谱,导入后数据为2151*42

工作表的重新命名和电脑桌面对文件夹的命名一样,可直接双击文件,进行名称的重新编辑

数据的分析

1 查找代码所在位置

2  相关性分析 (农学数据与光谱数据的相关性)

1)定义函数function ,该函数具体用法可百度查阅

2 代码的运行

代码运行时,第一次建议不要使用快捷键Enter , 可使用 编辑器---运行(防止代码文件位置不统一造成无法运行或运行出错)


3 运行结果分析

左边 ------当前文件夹------处理后文件直接带点击开,可查看生理指标与反射率的相关性,第一例为原始光谱,第二列为一阶导数


右边---工作区---cor代表相关系数,若不明白,可以根据自己个人数据双击点开查看。

相关性图片的查看

代码运行后会出现一张原始数据和光谱数据的 相关性图,可根据图查看数据相关性强弱

光谱指数的计算以及等势图的调整和查看

一、 以NDVI为例

和相关系数代码运行一样,

第一步:粘贴第一行数据。

第二步:将数据粘贴在命令窗口 

 第三步:加; 代码的运行

代码具体解析如下:

function[ndvicor] = ndvicorr1(parameter,refle)#定义函数

ndvicor = zeros(2151,2151);# 光谱个数,如果你为350:1000的波段,则需更改为zeros(651:651)

for i = 1:2151# 循环

ndvi = (refle - refle(:,i)) ./ (refle + refle(:,i));#NDVI 的计算公式,你可根据自己需求更改为其他植被指数的算法

ndvicor(i,:) = corr(ndvi,parameter).^2;#相关系数

end

ndvicor((1350-349):(1400-349),:) = NaN;#删除不必要的范围

ndvicor(:,(1350-349):(1400-349)) = NaN;#删除不必要的范围

ndvicor((1800-349):(1950-349),:) = NaN;#删除不必要的范围

ndvicor(:,(1800-349):(1950-349)) = NaN;#删除不必要的范围

figure 

contourf(350:2500,350:2500,ndvicor)#画出等试图 (横坐标,纵坐标,据NDVI与农学参数的决定系数)

colormap(jet);#为等试图颜色组合,具体颜色组合可查阅百度也可自行进行具体的操作,见后面

#输出了决定系数最大的前20个波段组合。

ndvicor2 = ndvicor;

ndvicor_max = zeros(20,3);

for i = 1:20

max1 = max(max(ndvicor2));

[x,y] = find(ndvicor2 == max1);

ndvicor2(ndvicor2 == max1) = 0;

a1 = [x,y];

ndvicor_max(i,:) = [max1,(a1(:,1)'+ 349)];

end

ndvicor_max

等试图的具体调整

可代码(我不会,Matlab有手动调节,可不许代码)

手动调整具体如下:


你可能感兴趣的:(利用Matlab 对光谱数据的分析)