資源簡介
主成份分析(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
- 上一篇:matlab課后題及實驗答案
- 下一篇:matlab模擬信號量化成二制信號
評論
共有 條評論