a =
-1 1 2
-2 3 1
4 0 3
for i=1:size(a,2)
for j=1:size(a,2)
c(i,j)=sum((a(:,i)-mean(a(:,i))).*(a(:,j)-mean(a(:,j))))/(size(a,1)-1);
end
end
c =
10.3333 -4.1667 3.0000
-4.1667 2.3333 -1.5000
3.0000 -1.5000 1.0000
c为求得的协方差矩阵,在matlab以矩阵a的每一列为变量,对应的每一行为样本。这样在矩阵a中就有3个列变量分别为a(:,1), a(:,2), a(:,3)。
在协方差矩阵c中,每一个元素c(i,j)为对第i列与第j列的协方差,例如c(1,2) = -4.1667为第一列与第二列的协方差。
拿c(1,2)的求解过程来说
c(1,2)=sum((a(:,1)-mean(a(:,1))).*(a(:,2)-mean(a(:,2))))/(size(a,1)-1);
1. a(:,1)-mean(a(:,1)),第一列的元素减去该列的均值得到
-1.3333
-2.3333
3.6667
2, a(:,2)-mean(a(:,2)),第二列的元素减去该列的均值得到
-0.3333
1.6667
-1.3333
3, 再将第一步与第二部的结果相乘
-1.3333 -0.3333 0.4444
-2.