matlab 数据pca应用,基于MATLAB的高光谱遥感数据的PCA运用

基于MATLAB的高光谱遥感数据的PCA运用php

高光谱遥感数据下载

高光谱遥感数据来源

本文章以Indian Pines包为例。该数据文件下包括Indian_pines_corrected.mat和Indian_pines_gt.mat文件。

数据包导入matlab

下载后的数据文件夹中存在两个以.mat结尾的文件。其中文件名中含有corrected的.mat文件为原始三维的遥感数据。剩下的一个.mat文件是遥感数据的lable标签,它是二维数据。

导入数据代码以下:html

filename = ['Indian Pines\Indian_pines_corrected'];%单引号中存放数据文件的地址,地址因人而异,和你存放电脑中的具体位置有关。

X=load(filename);%matlab读取数据

注:导入matlab中的遥感数据是以结构体(struct)的形式存在,不能直接当作矩阵进行运算。矩阵数据是结构体中的一个属性,所以须要使用“.”来调用其中的矩阵信息。

3. 对数据进行降维

(。。大神,此小段能够跳过。。)将三维数据降维成二位数据,须要使用软件自带的一个函数(reshape( )函数),关于reshape( )函数的具体使用能够在Command window中输入 help reshape进行查看运用的规则。web

在降维以前须要肯定最终生成二维矩阵的大小,在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这种转换没毛病 烙铁。

废话很少说,直接上降维代码;svg

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进行查看运用的规则。工具

这是本身的第一篇博文,确定有许多须要改正的地方。若有发现错误,还请与我联系。欢迎讨论,共同进步·····~~~atom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值