我现在找到一些相关代码  但不知道如何用于我现在的数据中 请教!

代码为

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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降维相关推荐

  1. 人脸识别 pca matlab,基于PCA的人脸识别的Matlab实现代码

    基于PCA的人脸识别算法 --Matlab Face recognition Based on PCA 目录 人脸识别技术是基于人的脸部特征,对输入的人脸图象或者视频流 . 首先判断其是否存在人脸 , ...

  2. 基于PCA的人脸识别的Matlab实现代码

    基于PCA的人脸识别算法 --Matlab Face recognition Based on PCA 目录 一.人脸识别简介...3 二.主元分析...3 三.原理说明...3 四.算法流程图... ...

  3. matlab做pca人脸识别,[转载]一个修改后的PCA进行人脸识别的Matlab代码,识

    一个修改后的PCA进行人脸识别的Matlab代码,识别率达到88% % calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练 ...

  4. 三维主成分图matlab,PCA主成分分析之三维演示(Matlab)

    PCA主成分分析之三维演示(Matlab) 写这个的主要原因是实验课上的要求,原本需要写一个演示 PCA 原理的 demo ,按照实验指导书上来说,在二维上演示就好了,但是为了折腾和无聊装逼,我写了这 ...

  5. 基于PCA的故障诊断方法(matlab)

    1. PCA原理分析 PCA的原理主要是将原始数据进行降维.其具体工作原理参照:CodingLabs - PCA的数学原理 2. 数据预处理 训练数据集(只有正样本)为维数据,即有n个采样值,每个采样 ...

  6. 图像旋转的MATLAB和OpenCV源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 源码中用到的lena.jpg.lena_gray ...

  7. 图像转置的MATLAB和OpenCV源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 注意,图像转置和图像旋转是两回事,图像转置只是把 ...

  8. matlab图像相加例子,MATLAB图像处理例子

    MATLAB图像处理例子 clc;clear all;close all; a = imread( railway_05.jpg ); b = rgb2gray(a); c = im2bw(b,240 ...

  9. 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...

最新文章

  1. R语言ggplot2地理信息可视化(上)
  2. 原来颓废也是需要力气的
  3. java中 immutable,future,nio
  4. phoenix的元数据一般存在哪里_Phoenix的一些问题
  5. mysql 设计模式_mysql – 你会推荐什么版本设计模式
  6. laravel 模块化管理 插件 caffeinated
  7. Js中Array对象
  8. html video各种控制命令,HTML5 Video(视频)
  9. vue设置多选框默认勾选_vue中复选框怎么默认全选,至少选择4个才可以点击下一步...
  10. Exchange2010 SP1部署边缘服务器
  11. poj3264RMQ
  12. 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术...
  13. c# 程序调试出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。”...
  14. python标准库学习5 ---bisect — Array bisection algorithm
  15. 2021-05-10
  16. 乐视2 pro2 IMAX手机root权限 刷rece 解锁 刷系统等
  17. Golang中defer的执行时机
  18. 华为鸿蒙系统HarmonyOS学习之一:鸿蒙HarmonyOS系统简介
  19. Vue3.0新特性及使用方法
  20. SQL使用分组查询并计算条数

热门文章

  1. 安装activeperl遇到写入错误,无权限访问目录
  2. 朴素贝叶斯分类器:例子解释
  3. 2022危险化学品生产单位安全生产管理人员考试模拟100题及答案
  4. 银行表内表外业务图解
  5. 阿里datav自定义组件 管道插件
  6. N点虚拟系统出现 “操作MICROSOFT-FTP发生错误 ,请检查是否安装或标识符错误”解决方案
  7. linux下ganglia监控系统搭建,linux下ganglia监控系统搭建
  8. Revit(17)-族-族类型的复制与重命名
  9. Ubuntu12.04不能连接小米开发,adb devices不能看到设备
  10. 私企做阿米巴经营模式失败的原因——灵魂5问!