matlab实现主成分分析(遥感图像处理)

数据说明:采用的数据源是从别人那里拷的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_Testpath = 'data\sst\2012\';
filelist = dir('data\sst\2012\*.sst.txt');
len = length(filelist);
% savepath = 'data\sst_pic\';figure;
% 读取文件
for i = 1:lenfilename = [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:noutpic = 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:lenoutpic = 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

转载于:https://www.cnblogs.com/leonwen/p/5122811.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Struts1和Struts2的区别和对比(完整版)(转)

Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比:Action 类: • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口。 • Str…

SQL Server中关于跟踪(Trace)那点事

前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案。 简单的举几个应用场景…

php怎么获取用户所在地址,php获取客户端ip及获取ip所在地址

// 获取ipfunction ip(){if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))$ip $_SERVER["HTTP_X_FORWARDED_FOR"];else if (isset($_SERVER["HTTP_CLIENT_IP"]))$ip $_SERVER["HTTP_CLIENT_IP"];else$ip $_SERVER["REMOTE_ADDR&…

linux中的rm 删除命令

1.rm 不仅可以删除目录还可以删除文件-f, --force 强制删除。忽略不存在的文件,不提示确认-i 在删除前需要确认-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提 示内容更少&a…

在Windows上面安装多个Memcached

在Windows上面安装多个Memcached sc create "memcached Server3" start auto binPath "D:\memcached-1.4.4\memcached.exe -d runservice -m 32 -p 22122" DisplayName "memcached Server3" 转载于:https://www.cnblogs.com/stono/p/8092765.ht…

前端面试

1、如何理解js的闭包 2、js的事件冒泡 3、jquery的跨域请求 4、margin和padding的区别 5,、用过哪些前端框架转载于:https://www.cnblogs.com/iwenwen/p/3959677.html

PHP实现可示化代码

PHP是一种服务器端脚本语言,它主要用于开发Web应用程序。虽然PHP本身不提供可视化代码的功能,但你可以使用一些第三方库和工具来实现可视化代码。 以下是一些常用的PHP可视化代码的工具和库: 1. Graphviz:Graphviz是一个开源的可…

php若$a没定义默认是,PHP之错误处理详解

PHP之错误处理详解错误报告PHP程序的错误发生一般归属于下列三个领域:1、语法错误语法错误最常见,并且也容易修复。如:代码中遗漏一个分号。这类错误会阻止脚本的执行2、运行时错误这种错误一般不会阻止PHP脚本的执行,但会阻止当前…

热血沙城-3.2移植-古月-cocos2dx源码

最近发现我去年学习2dx的时候移植过的一个游戏现在被放在网上出售 真是有点想笑 本人比较喜欢武侠风格的游戏,当时9秒开源了热血沙城 本着学习的态度 从2.1.2移植到3.2 用了一周的时间 中间各种报错 大概修改了1000多处错误 同时增加了支持摇杆 后来放到9秒上开源&…

【openjudge 1.11 07】和为给定数

我看到这个的第一反应就是爆搜&#xff0c;然后写了一个没加$No$的4分程序 #include <bits/stdc.h> #include <algorithm> #define it int #define fr for #define il inline using namespace std; it book[100020],t[100020]; it spe[50010]; it n,m,bz0; it main…

tcp http socket

1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议&#xff0c;可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口&#xff0c;使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”&#xff1a; 第一…

php文件多上传文件,php文件上传(多文件上传)

http://www.cnblogs.com/itcx/p/4209034.htmlupload.phpclass File_upload{public $upload_path./upload/;//上传文件的路径public $allow_typearray();//允许上传的文件类型public $max_size20480;//允许的最大文件大小public $overwritefalse;//是否设置成覆盖模式public $re…

MyBatis的初始化方式

1. 加载配置文件 public static void main(String[] args) throws IOException {//mybatis的配置文件String resource "conf.xml";//使用类加载器加载mybatis的配置文件&#xff08;它也加载关联的映射文件&#xff09;InputStream is Test1.class.getClassLoader(…

iOS 应用内跳转到appstore里下载

SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话&#xff0c;那SKStoreProductViewController使用起来也非常简单了。当你希望向用户展示App Store中产品时&#xff0c;你需要&#xff1a; 1.实例化一个SKStoreProductViewContr…

MySQL查询本周、上周、本月、上个月份数据的sql代码

http://www.jb51.net/article/32277.htm MySQL查询的方式非常多&#xff0c;以下为您介绍的MySQL查询实现的是查询本周、上周、本月、上个月份的数据&#xff0c;假设您对MySQL查询方面感兴趣的话&#xff0c;最好还是一看查询当前这周的数据SELECT name,submittime FROM enter…

matlab用泰勒展开解微分方程,mathematica的解微分方程的能力让人大失所望啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Clear["Global*"]c 299792458*10^2(*光速&#xff0c;单位cm/s*)G 6.67259*10^-8(*gravitational constant&#xff0c;引力常数&#xff0c;单位cm^3/g*s^2*)Msun 1.9891*10^33(*Subscript[M, \[CircleDot]]&#xf…

jquery 实现智能炫酷的翻页相册效果

jquery 实现智能炫酷的翻页相册效果巧妙的运用 Html 的文档属性&#xff0c;大大减少jquery 的代码量&#xff0c;实现了智能炫酷的翻页相册、兼容性很好&#xff0c;实现了代码与标签的完全分离​1. [代码]jquery 实现智能炫酷的翻页相册效果 $(document).ready(function(…

Python爬虫入门项目

Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间&#xff0c;为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus&#xff08;中文&#xff1a;蒙提派森的飞行马戏团&#xff09;的狂热粉…

学习笔记之-------UIScrollView 基本用法 代理使用

//contentSize、contentInset和contentOffset 是 scrollView三个基本的属性。 // 滚动 self.ScrollView.contentSize self.imageview.frame.size; //偏移X 0 Y -74 向下偏移 self.ScrollView.contentOffset CGPointMake(0,-74); // 边距 距离顶部74 左 0 下40 右0 self.Scr…

hibernate3配置文件hibernate.cfg.xml的详细解释

<!--标准的XML文件的起始行&#xff0c;version1.0表明XML的版本&#xff0c;encodinggb2312表明XML文件的编码方式--> <?xml version1.0 encodinggb2312?> <!--表明解析本XML文件的DTD文档位置&#xff0c;DTD是Document Type Definition 的…