• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-01-02
  • 语言: Matlab
  • 标签: PCA  matlab  

资源简介

主成份分析(PCA)中关于协方差矩阵实现的两种方法MATLAB代码详解

资源截图

代码片段和文件信息

%% 清空环境变量

clear
clc

%% 首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数,每一行为样本,每一列为维数。

mysample = fix(rand(103)*50)

%% 根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢?协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。
%% 样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:

 dim1 = mysample(:1);
 dim2 = mysample(:2);
 dim3 = mysample(:3);
%% 计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

 sum((dim1 - mean(dim1)) .* (dim2 - mean(dim2))) / (size(mysample 1) - 1)  %得到 -147.0667
 sum((dim1 - mean(dim1)) .* (dim3 - mean(dim3))) / (size(mysample 1) - 1)  %得到  -82.2667
 sum((dim2 - mean(dim2)) .* (dim3 - mean(dim3))) / (size(mysample 1) - 1)  %得到   76.5111
%% 搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:

 var(dim1)  %得到 227.8778
 var(dim2)  %得到 179.8222
 var(dim3)  %得到 156.7111
 
%%  这样,我们就得到了计算协方差矩阵所需要的所有数据,调用M

评论

共有 条评论