主成分分析法 求矩阵的权重
clc
clear
close all
R = ...
[ 0.12 0.41 0.33 0.12 0.03; ...
0.14 0.52 0.21 0.10 0.03; ...
0.18 0.38 0.34 0.07 0.03; ...
0.11 0.26 0.48 0.10 0.06; ...
0.05 0.36 0.51 0.08 0.01; ...
0.27 0.45 0.21 0.05 0.02; ...
0.20 0.58 0.16 0.04 0.02; ...
0.08 0.20 0.41 0.22 0.09; ...
0.18 0.59 0.17 0.04 0.02; ...
0.13 0.34 0.39 0.09 0.04; ...
0.09 0.25 0.42 0.16 0.08; ...
0.06 0.21 0.41 0.23 0.10; ...
0.08 0.22 0.51 0.13 0.06; ...
0.07 0.20 0.24 0.32 0.17; ...
0.10 0.31 0.42 0.14 0.04; ...
0.15 0.20 0.32 0.18 0.15; ...
0.13 0.34 0.40 0.10 0.02; ...
0.19 0.37 0.29 0.10 0.06];
% Rxx = cov(R); %计算协方差矩阵
mean_R = repmat(mean(R),size(R,1),1)
R_tmp = R - mean_R;
Rxx_tmp = (R_tmp' * R_tmp) / ( size(R_tmp,1) - 1 );%计算协方差矩阵
[Evec Eval] = eig( Rxx_tmp );
%选取特征值较大的特征矢量作为主模式矢量
N_vec = 5;%主模式矢量个数
ModeVec = Evec(: , end - N_vec +1 : end);
DM = R_tmp * ModeVec%在各个模式矢量上投影,实现降维
figure;
plot( sum(abs(DM)) );
sum( sum( R - (DM * ModeVec' + mean_R) ) )%恢复数据验证