pca 对图像降维matlab,Matlab用处理后的数据进行PCA降维
我现在找到一些相关代码 但不知道如何用于我现在的数据中 请教!
代码为
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Wpca,Xpca, mPca, eigNum] = PCA1( X, dimPara )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 此函数用来做PCA降维
%-input X,输入样本按列堆积的矩阵: d * n ,d 为特征维数,n 为样本个数
% dimPara, 初始目标降维数/保持的能量百分比
%-output Wpca,散布矩阵的特征向量
% Xpca(:,i)为X(:,i)在Wpca上的投影系数
% mPca,所有样本的均值
% eigNum, Xpca中降维后样本的维数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[d,n] = size( X ); % 样本矩阵的大小
% 总体均值
mPca = mean(X,2); % 对X按行求均值,结果排成一列,则为一个d 维列向量
% 求散布矩阵St
Y = X - kron(ones(1,n), mPca); % kron积,得到一个 d*n 均值矩阵,相当于把mPca列向量复制成 d*n 维
St = Y * Y.'; % St=d*d 维散布矩阵
% 求散布矩阵的特征向量,并选取d1个最大的特征值
[V,D] = eig(St); % 求出St的特征值矩阵D和和对应特征向量的矩阵V
Ddiag = diag(D); % 取特征值构成一个d维列向量
Ddiag = Ddiag.'; % 变为d维行向量
[Ddiag,Index] = sort(Ddiag, 'descend'); % 为取前d1个最大特征值,降序排列特征值
d1 = DestDim( Ddiag, dimPara ); % 得到最终降维数
% 求基向量Wpca以及X对Wpca的投影系数Xpca
Wpca = zeros(d1,d); % 初始化基向量,这里的Wpca实际上为基向量的转置
Xpca = zeros(d1,n); % 初始化投影系数
Wpca = V(:,Index(1:d1)).'; % 基向量Wpca为前d1个最大特征值对应的d维特征列向量构成的 d*d1 维投影矩阵,再转置后与Y乘得到投影系数Xpca
Wpca = Wpca ./ ( sqrt(sum(Wpca.^2, 2)) * ones(1,size(Wpca,2)) ); % 把投影矩阵的每一行都除以该行的 2-norm(也就是通常的所有元素的平方求和再开根号),即标准化
Xpca = Wpca * Y; % 与Y乘得到 d1*n 维投影系数矩阵Xpca
eigNum = d1; % 得到最终降维数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function d1 = DestDim( Ddiag, dimPara ) % 得到最终降维数, Ddiag为降序排列的特征值行向量,dimPara为初始目标降维数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if dimPara <= 1
sumEig0 = dimPara * sum(Ddiag); % sum(Ddiag)为所有特征值之和
sumEig = 0;
d1 = 0;
while sumEig < sumEig0
d1 = d1 + 1;
sumEig = sumEig + Ddiag(d1); % sumEig为特征值累加
end
else
d1 = dimPara;
end
% dimPara=0时,d1=0, Wpca=zeros(0,d), Xpca=(0,n)
% dimPara<1时, 保持dimPara的能量,例如dimPara=0.9,保持90%
% dimPara>1时,d1=dimPara
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 此算法不能保证d1n 时也能降维到d1
% d<=n时,自然有d1<=d<=n
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pca 对图像降维matlab,Matlab用处理后的数据进行PCA降维相关推荐
- 人脸识别 pca matlab,基于PCA的人脸识别的Matlab实现代码
基于PCA的人脸识别算法 --Matlab Face recognition Based on PCA 目录 人脸识别技术是基于人的脸部特征,对输入的人脸图象或者视频流 . 首先判断其是否存在人脸 , ...
- 基于PCA的人脸识别的Matlab实现代码
基于PCA的人脸识别算法 --Matlab Face recognition Based on PCA 目录 一.人脸识别简介...3 二.主元分析...3 三.原理说明...3 四.算法流程图... ...
- matlab做pca人脸识别,[转载]一个修改后的PCA进行人脸识别的Matlab代码,识
一个修改后的PCA进行人脸识别的Matlab代码,识别率达到88% % calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练 ...
- 三维主成分图matlab,PCA主成分分析之三维演示(Matlab)
PCA主成分分析之三维演示(Matlab) 写这个的主要原因是实验课上的要求,原本需要写一个演示 PCA 原理的 demo ,按照实验指导书上来说,在二维上演示就好了,但是为了折腾和无聊装逼,我写了这 ...
- 基于PCA的故障诊断方法(matlab)
1. PCA原理分析 PCA的原理主要是将原始数据进行降维.其具体工作原理参照:CodingLabs - PCA的数学原理 2. 数据预处理 训练数据集(只有正样本)为维数据,即有n个采样值,每个采样 ...
- 图像旋转的MATLAB和OpenCV源码
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 源码中用到的lena.jpg.lena_gray ...
- 图像转置的MATLAB和OpenCV源码
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 注意,图像转置和图像旋转是两回事,图像转置只是把 ...
- matlab图像相加例子,MATLAB图像处理例子
MATLAB图像处理例子 clc;clear all;close all; a = imread( railway_05.jpg ); b = rgb2gray(a); c = im2bw(b,240 ...
- 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...
最新文章
- R语言ggplot2地理信息可视化(上)
- 原来颓废也是需要力气的
- java中 immutable,future,nio
- phoenix的元数据一般存在哪里_Phoenix的一些问题
- mysql 设计模式_mysql – 你会推荐什么版本设计模式
- laravel 模块化管理 插件 caffeinated
- Js中Array对象
- html video各种控制命令,HTML5 Video(视频)
- vue设置多选框默认勾选_vue中复选框怎么默认全选,至少选择4个才可以点击下一步...
- Exchange2010 SP1部署边缘服务器
- poj3264RMQ
- 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术...
- c# 程序调试出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。”...
- python标准库学习5 ---bisect — Array bisection algorithm
- 2021-05-10
- 乐视2 pro2 IMAX手机root权限 刷rece 解锁 刷系统等
- Golang中defer的执行时机
- 华为鸿蒙系统HarmonyOS学习之一:鸿蒙HarmonyOS系统简介
- Vue3.0新特性及使用方法
- SQL使用分组查询并计算条数
热门文章
- 安装activeperl遇到写入错误,无权限访问目录
- 朴素贝叶斯分类器:例子解释
- 2022危险化学品生产单位安全生产管理人员考试模拟100题及答案
- 银行表内表外业务图解
- 阿里datav自定义组件 管道插件
- N点虚拟系统出现 “操作MICROSOFT-FTP发生错误 ,请检查是否安装或标识符错误”解决方案
- linux下ganglia监控系统搭建,linux下ganglia监控系统搭建
- Revit(17)-族-族类型的复制与重命名
- Ubuntu12.04不能连接小米开发,adb devices不能看到设备
- 私企做阿米巴经营模式失败的原因——灵魂5问!