[m,n,p]=size(data);%(610,340,103)%确定最终生成二维矩阵的大小
data=reshape(data,t,p);%(207400,103),即(样本数,波段数)降维(三维矩阵降为二维矩阵)
[pc,score,latent,tsquare]=pca(data);%pc为主成分系数,score为主成分的结果,latent为方差
feature_after_PCA=score(:,1:3);
RES=reshape(feature_after_PCA,m,n,3);%取前三维,把矩阵还原为三维
% imwrite(RES(:,:,1),'1.jpg');
% imwrite(RES(:,:,2),'2.jpg');
% imwrite(RES(:,:,3),'3.jpg');
imwrite(RES,'PU_pca_3.jpg')
%cumsum(latent)./sum(latent)
%ans =0.5832,0.9442,0.9886,0.9916,0.9937
subplot(1,3,1);imshow(RES(:,:,1));
subplot(1,3,2);imshow(RES(:,:,2));
subplot(1,3,3);imshow(RES(:,:,3));
来自
<https://blog.csdn.net/qq_40721337/article/details/104961216?ops_request_misc=%257B%2522request%255Fid%2522%253A%
2522160134758919726892403218%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=
160134758919726892403218&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2
~rank_v25-6-104961216.pc_search_result_cache&utm_term=%E9%AB%98%E5%85%89%E8%B0%B1PCA&spm=1018.2118.3001.4187>
导入matlab中的遥感数据是以结构体(struct)的形式存
在,不能直接当做矩阵进行运算。矩阵数据是结构体中的
一个属性,因此需要使用“.”来调用其中的矩阵信息。
在降维之前需要确定最终生成二维矩阵的大小,在matlab
中我们可以使用自带的size( )函数对数据的大小进行查看。
[m,n,p]=size(data); 其中m表示三维矩阵的行,n表示列,
将三维数据降维成二位数据,需要使用软件自带的一个函数
(reshape( )函数),关于reshape( )函数的具体使用可以在
Command window中输入 help reshape进行查看运用的规
有一个5*6*7的三维矩阵,是否可以转换成7*30的二维矩
阵?答案是可以的分析:5*6*7的三维矩阵中包含的元素个
数是210个,转换之后的二维矩阵所包含的元素个数是不是
data=reshape(data,p,t);%data为传入的三维数组,p为最
终得到二维矩阵行的个数,t为最终得到二维矩阵列的个数
分区 高光谱数据的
pca
处理(
matlab
) 的第
1
页
评论1