数据说明:采用的数据源是从别人那里拷的2012年全年的Sea Surface Temperature(海标温度,SST)数据,一直想找一份比较好的主成分分析数据,也没找到。

Matlab自身有主成分分析的函数princomp,其中返回的第二个数据就是样本经过K-L变换后的各个成分数据,第三个参数就是特征值大小。(第一个参数貌似是协方差矩阵,我还没看)

PCA的基本原理:
  一般图像的线性变换可以表示为:

y=Tx,

  式中X为待变换图像数据矩阵,Y为变换后的数据矩阵,T为实现这一线性变换的变换矩阵。如果变换矩阵T是正交矩阵,并且它是由原始图像数据矩阵X的协方差矩阵S的特征向量所组成,则该线性变换成为主成分分析,并且成Y矩阵的每一行矢量为变换后的一个主成分。

  具体的算法步骤为:

马上要走了,偷个懒,直接把握之前做的一个PPT放出来了(话说也真是懒啊,这n多年没更新一点内容能不懒嘛!!!(⊙o⊙)…)

以下为代码实现部分:

close all;
clear all;
clc; %% PCA_Test path = 'data\sst\2012\';
filelist = dir('data\sst\2012\*.sst.txt');
len = length(filelist);
% savepath = 'data\sst_pic\'; figure;
% 读取文件
for i = 1:len
filename = [path filelist(i).name];
date = filename(15:20);
sst_data(i,:) = dlmread(filename);%读取 min_val = min(sst_data(i,:));
max_val = max(sst_data(i,:)); pic = reshape(sst_data(i,:),360,180);
pic = rot90(pic);
subplot(4,3,i),imshow(pic,[min_val max_val]),title(date);
colormap;
% % 保存数据图像
% pic = reshape(sst_data(i,:),360,180);
% pic = rot90(pic);
% strI = int2str(i);
% save_path = [savepath strI '.tif'];
% imwrite(pic,save_path); end % 取得样本数据
X = sst_data';
tempX = X; % 取样本大小:维度m,样本数n
[m n] = size(X); % 求各样本平均值
meanVal = mean(X); % 样本矩阵中心化
X = X - repmat(meanVal,64800,1); % 计算协方差
S = X' * X ./ (m - 1); %".*"表示矩阵元素对应相乘 % 计算特征值eg和特征向量Ev
[Ev eg] = eig(S); % 由大到小排列对应
Ev = fliplr(Ev);
eg = fliplr(eg); % % 特征向量转置
% EvT = Ev'; % 得到新的成分
Y = tempX * Ev; % 将各个成分进行输出
figure;
for i = 1:n
outpic = Y(:,i); min_num = min(outpic);
max_num = max(outpic); outpic = reshape(outpic,360,180);
outpic = rot90(outpic);
%outtitle = ['特征值=' num2str(latent(i))];
subplot(4,3,i),imshow(outpic,[min_num max_num]),title(outtitle);%显示,并输出特征值
colorbar;
end

处理的结果对比显示:

主成分结果显示(按照特征值由大到小):

这个结果是和它内部的函数运算出来的结果是一样的:

% PCA
[coeff score latent] = princomp(sst_data');
[m,n] = size(score);
%
figure;
for i = 1:len
outpic = score(:,i); min_num = min(outpic);
max_num = max(outpic); outpic = reshape(outpic,360,180);
outpic = rot90(outpic);
outtitle = ['特征值=' num2str(latent(i))];
subplot(4,3,i),imshow(outpic,[min_num max_num]),title(outtitle);%显示,并输出特征值
colorbar;
end

唉哟,这个博客园居然对Matlab着色显示的时候都不怎么想要支持,看来还是我程序界都不怎么用Matlab哦

正在写Python的实现方式,过两天有时间了再放上来看看吧~~~

有点仓促,就此搁笔。

2016年1月11日22:38

原文链接:http://www.cnblogs.com/leonwen/p/5122811.html

matlab实现主成分分析(遥感图像处理)的更多相关文章

  1. 在matlab中进行遥感影像地理坐标的相互转换

    在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始.处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换, ...

  2. GDAL 遥感图像处理后的数据保存为图像文件的实现方法

    在遥感图像处理中,GDAL库不仅能读取和处理大部分的遥感图像数据,而且还能够实现图像处理后将数据保存为图像的功能. 本文就详细介绍如何将内存中的图像数据保存为.tif格式. 首先,遥感数据处理完,保存 ...

  3. MATLAB做主成分分析(PCA)

    简单的主成分分析.第一次见识PCA,我的认识是,尽量用更少的维度来描述数据,以达到理想(虽不是最好,但是''性价比''最高)的效果. %% 主成分分析降维 clear; % 参数初始化 inputfi ...

  4. 在matlab中实现遥感影像和shp文件的结合显示

    clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...

  5. 基于Qt的遥感图像处理软件设计总结

     开发工具 VS2008+Qt4.8.0+GDAL1.9  要点 接口要独立,软件平台与算法模块独立,平台中各接口设计灵活,修改时容易. 设计软件时一步步来,每个功能逐一实现,某个功能当比较独立时可以 ...

  6. 分形在遥感和GIS中的应用

    GIS等高线化简 遥感图像的追踪 分形matlab实现:分形应用于遥感图像处理             低分辨率和高分辨率图形它们的形状是相似的(图像增强) 贪吃蛇和蚁群算法:试想管中窥豹,一只小蚂蚁 ...

  7. Matlab复习

    Matlab是刚好两年前(大三)接触的,那时一些课程(遥感图像处理.计量地理学......)要涉及简单的数学建模的问题.Matlab在那些资深的开发者看来可能是一门有点边缘化的东西,虽然也能做开发,能 ...

  8. Qt 实现遥感图像显示时的连动效果

    遥感图像处理时少不了ENVI,用过ENVI的人都知道,打开图像时或图像处理完后,在缩略图上移动鼠标时,鼠标周围的图像信息会在大的视图中实时的显示,即大图会跟着小图中的鼠标移动,这即是图像的连动效果.如 ...

  9. MATLAB中文论坛帖子整理(GUI)

    MATLAB中文论坛帖子整理(GUI) 目   录  1.GUI新手之——教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中 ...

随机推荐

  1. Redhat6.6替换Centos Yum源

    1.删除当前系统自带的yum [root@reddhat6_155_201 ~]# rpm -qa |grep yum yum-rhn-plugin--.el6.noarch yum-utils--. ...

  2. A Pattern Language for Parallel Programming

    The pattern language is organized into four design spaces.  Generally one starts at the top in the F ...

  3. python基础之Matplotlib库的使用一(平面图)

    在我们过去的几篇博客中,说到了Numpy的使用,我们可以生成一些数据了,下面我们来看看怎么让这些数据呈现在图画上,让我们更加直观的来分析数据. 安装过程我就不再说了,不会安装的,回去补补python最 ...

  4. C++回调,函数指针

    想要理解回调机制,先要理解函数指针 函数指针 函数指针指向的是函数而非对象,和其他指针一样,函数指针指向某种特定的类型 函数的类型由他的返回类型和参数类型共同决定,与函数名无关,如: bool len ...

  5. 2019前端UI框架排行榜

    一.Mint UI 流行指数:★★★★ Mint UI是 饿了么团队开发基于 Vue.js 的移动端UI框架,它包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要. 官网:https:/ ...

  6. 3-Consul 使用手册

    原文:http://www.liangxiansen.cn/2017/04/06/consul/ Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键 ...

  7. mssql 导出作业,导出表,导出存储过程等

    1.mssql 导出作业 1.选中sql server 代理-作业 2.点击F7 显示对象资源管理器详细信息,3.按住ctrol 选中 右键编写作业脚本到就可以了 2.mssql 导出表和存储过程等 ...

  8. 在使用 Fortify进行源码扫描时需要做对项目需要做什么?

    1.一般我们的项目都是svn 或git 进行管理的,为了扫出异常的问题 做好把   “” .svn    “”  文件删除 2.把我们的项目需要的jar 文件放到一个文件夹内同项目一起进行扫描.这样为 ...

  9. SPC软控件提供商NWA的产品在各行业的应用(化工行业)

    Northwest Analytical (NWA)是全球领先的“工业4.0”制造分析SPC软件控件提供商.产品(包含: NWA Quality Analyst , NWA Focus EMI 和 N ...

  10. Java中关于数据类型的一些问题

    Java中关于数据类型的一些问题 总结一下最近笔试遇到的一些关于Java中数据类型的一些问题. 虽然比较基础,但在实际做题却很容易出错的点,而且往往这些题出错了会给面试官很不好的感觉:你的基础不好. ...