资源简介
为了说明什么是数据的主成分,先从数据降维说起。数据降维是怎么回事儿?假设三维空间中有一系列点,这些点分布在一个过原点的斜面上,如果你用自然坐标系x,y,z这三个轴来表示这组数据的话,需要使用三个维度,而事实上,这些点的分布仅仅是在一个二维的平面上,那么,问题出在哪里?如果你再仔细想想,能不能把x,y,z坐标系旋转一下,使数据所在平面与x,y平面重合?这就对了!如果把旋转后的坐标系记为x',y',z',那么这组数据的表示只用x'和y'两个维度表示即可!当然了,如果想恢复原来的表示方式,那就得把这两个坐标之间的变换矩阵存下来。
代码片段和文件信息
clc; clear all; close all;
I1=importdata( ‘d00_te.dat‘);%从外部将文本或者数据文件如txt.dat导入到Matlab的workspace中
I2=importdata( ‘d01_te.dat‘);
%I3=importdata( ‘d00_te.dat‘);
X1(::)=I1(::);
X2(::)=I2(::);
%离线过程
%数据标准化,使用的是每一列的平均值和标准差
X_mean = mean(X1); %按列求X1平均值
X_std = std(X1); %求标准差
[X_rowX_col] = size(X1); %求X1行、列数
X1=(X1-repmat(X_meanX_row1))./repmat(X_stdX_row1);
%求协方差矩阵
sigmaX1 = cov(X1);
%对协方差矩阵进行特征分解,lamda为特征值构成的对角阵,T的列为单位特征向量,且与lamda中的特征值一一对应:
[Tlamda] = eig(sigmaX1);
%取对角元素(结果为一列向量),即lamda值,并上下反转使其从大到小排列,主元个数初值为1,若累计贡献率小于90%则增加主元个数
D = flipud(diag(lamda)); %diag取对角线元素,flipud矩阵翻转
num_pc = 1;
while sum(D(1:num_pc))/sum(D) < 0.9
num_pc = num_pc +1;
end
%取与lamda相对应的特征向量
P = T(:X_col-num_pc+1:X_col);%P是取得主元矩阵
%TT=X1*T;
%TT1=X1*P;
%求置信度为95%时的T^2统计控制限,利用F-分布确定
T2UCL1=num_pc*(X_row-1)*(X_row+1)*finv(0.95num_pcX_row - num_pc)/(X_row*(X_row - num_pc));
%置信度为95%的Q统计控制限
for i = 1:3
- 上一篇:基于BP神经网络的语音信号识别
- 下一篇:PCA 主成分分析代码 MATLAB版
相关资源
- 高光谱图像pca分析特征提取
- pca源码matlab
- PCA人脸识别Eigenface特征脸Matlab
- RPCA图像去噪算法
- MATLAB 对iris数据集进行PCA
- 遥感影像融合_数字图像处理的matlab程
- 基于TE过程的PCA程序matlab
- 基于PCA和SVM的人脸识别.zip
- PCA算法实现人脸识别基于matlab GUI界面
- 基于matlab的人脸识别271850
- 2D2DPCA人脸识别matlab代码/ORL库
- PCA人脸识别MATLAB代码/ORL库
- PCA人脸识别论文附MATLAB程序
- KPCA matlab实现
- 基于K-L变换的人脸识别系统
- 基于PCA使用Yale人脸数据库的人脸识别
- 降维技术matlab工具箱
- 2dpca的matlab源码
- 基于pca的图像压缩与重建代码
- 基于pca的图像压缩算法
- 2DPCA的matlab代码
- 基于PCA算法实现人脸识别完整代码文
- MATLAB下人脸图像的PCA重构
- LDA与PCA的讲解与matlab演示
- 基于PCA的点云位姿估计与粗拼接,m
- 基于PCA的人脸识别matlab)
- Matlab人脸识别-PCA算法
- 基于PCA对人脸图像做特征选择matlab程
- 基于PCA算法的人脸识别包含人脸库
- 表情识别 源码Matlab LBP+LPQ SVM PCA
评论
共有 条评论