基于MATLAB的高光谱遥感数据的PCA运用
来源:互联网 发布:js文件压缩成 min.js 编辑:程序博客网 时间:2024/05/17 09:46
基于MATLAB的高光谱遥感数据的PCA运用
- 高光谱遥感数据下载
高光谱遥感数据来源
本文章以Indian Pines包为例。该数据文件下包括Indian_pines_corrected.mat和Indian_pines_gt.mat文件。 - 数据包导入matlab
下载后的数据文件夹中存在两个以.mat结尾的文件。其中文件名中含有corrected的.mat文件为原始三维的遥感数据。剩下的一个.mat文件是遥感数据的lable标签,它是二维数据。
导入数据代码如下:
filename = ['Indian Pines\Indian_pines_corrected'];%单引号中存放数据文件的地址,地址因人而异,和你存放电脑中的具体位置有关。X=load(filename);%matlab读取数据
注:导入matlab中的遥感数据是以结构体(struct)的形式存在,不能直接当做矩阵进行运算。矩阵数据是结构体中的一个属性,因此需要使用“.”来调用其中的矩阵信息。
3. 对数据进行降维
(。。大神,此小段可以跳过。。)将三维数据降维成二位数据,需要使用软件自带的一个函数(reshape( )函数),关于reshape( )函数的具体使用可以在Command window中输入 help reshape进行查看运用的规则。
在降维之前需要确定最终生成二维矩阵的大小,在matlab中我们可以使用自带的size( )函数对数据的大小进行查看。例如本例中查看Indian_pines_corrected.mat数据文件中的矩阵大小,代码如下:
A=X.indian_pines_corrected;%这里在上面的注 解释过了。[m,n,p]=size(A);%其中m表示三维矩阵的行,n表示列,p表示页,A是作为参数传入size()
数据降维的关键思想:如何将三维数据压缩成二维,举例便知。
有一个5*6*7的三维矩阵,是否可以转换成7*30的二维矩阵?答案是可以的。嘻嘻
分析:5*6*7的三维矩阵中包含的元素个数是210个,转换之后的二维矩阵所包含的元素个数是不是也是210,so这种转换没毛病 烙铁。
废话不多说,直接上降维代码;
t=m*n;M=reshape(A,p,t);%A为传入的三维数组,p为最终得到二维矩阵行的个数,t为最终得到二维矩阵列的个数M=M';%将M矩阵转置
至于为何转置,请参考下面这位博主的文章。降维需要转置
4. 进行主成分分析(PCA)
使用matlab工具箱自带的princomp( )函数。
代码如下:
[COEFF,SCORE,latent]= princomp(M)
COEFF,SCORE,latent三个参数代表什么含义,可以在Command window中输入 help princomp进行查看运用的规则。
这是自己的第一篇博文,肯定有许多需要改正的地方。如有发现错误,还请与我联系。欢迎讨论,共同进步·····~~~
- 基于MATLAB的高光谱遥感数据的PCA运用
- 基于PCA和SVM的高光谱遥感图像分类研究
- 高光谱遥感图像的读取---使用matlab
- 基于高光谱数据的城市不透水面研究
- 基于libsvm的高光谱影像分类
- 遥感影像的“全色”和“多光谱”
- 遥感影像的“全色”和“多光谱”
- 遥感影像的“全色”与“多光谱”
- matlab语言,实现了对高光谱遥感图像的读取并做主成分分析,将结果按贡献率大小顺序排列并显示出来
- 遥感、高光谱和考古
- PCA源代码 基于MATLAB的
- matlab+opencv混编处理高光谱数据
- 基于MATLAB,运用PCA+SVM的特征脸方法人脸识别
- 基于高光谱影像的农作物检测应用简介
- 基于主动学习的高光谱图像分类方法研究
- hyperion高光谱数据L1Gst和L1R数据的区别
- 高光谱遥感图像处理(11)----ENVI建立矢量数据
- 多光谱和全色遥感数据
- linux 安装Python
- C语言入门第十二篇,数组
- Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable`
- python 数据结构和算法(一)
- BIRCH:使用聚类特征树(CF-树)的多阶段聚类算法
- 基于MATLAB的高光谱遥感数据的PCA运用
- RecyclerView系列(6)—回收,Recycler
- Kafka三款监控工具比较
- 文章标题
- Hadoop之旅(8)— HDFS API 实战操作
- Toast工具类
- 让你分分钟理解 JavaScript 闭包
- to_string 与 abs()
- git命令-切换分支