• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-02-06
  • 语言: Matlab
  • 标签: 高光谱  图像  降维  

资源简介

高光谱图像降维,可实现matlab对envi文件的直接读取,同时对高光谱图片直接处理。

资源截图

代码片段和文件信息

%PCA算法
clearclose all
%读数据
fid=freadenvi(‘shiyan‘);
[MNband]=size(fid);
%M=100;
%N=100;
%band=189;
%R=zeros(MNband);
%for i=1:band;
 %    F=fread(fid[M N]‘int16‘);
  % R(::i)=F; %取得第i波段光谱图像
%end
%fclose(fid)
%imshow(R(::1)[])%显示第i波段图像
%协方差矩阵
r(1:band1:band)=0;
v(1:band)=0;
for i=1:M
    for j=1:N
        a(1:band)=fid(ij1:band);
        r=r+a‘*a;
        v=v+a;
    end
end
r=r/(M*N);
v=v/(M*N);
C=r-v‘*v;%协方差矩阵cov(XY)=E(XY)-E(X)E(Y)
%主成分变换
[Tlambda]=eig(C);%协方差矩阵的特征向量T
newlamda=diag(lambda);                 %diag函数提取对角元素
[yi]=sort(newlamda);                 %对特征值进行从小到大排序,y为排序后的值,i为序号
for z=1:length(y)
newy(z)=y(length(y)+1-z);           %newy为按照特征值从大到小排序后的结果
end
rate=y/sum(y)   
newrate=newy/

评论

共有 条评论