数据的排列: 横: 样本个数 纵:光谱数据(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有手动调节,可不许代码)
手动调整具体如下: