发布网友 发布时间:2024-09-26 00:35
共1个回答
热心网友 时间:1天前
>> a=[1 2 3;2 5 6]
a =
1 2 3
2 5 6
>> b=mean(a)%%mean是按列求平均值,从b中的值可以看出
b =
1.5000 3.5000 4.5000
>> c=mean(a')%%所以要按行求平均值,直接转置求取,最后对c再求转置即可得到p维列向量
c =
2.0000 4.3333
%%%%%%%%%%%%%%%%%%%%%%%%%%
>> M=rand(4,3)
M =
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
>> m=cov(M)
m =
0.0892 0.0330 0.0405
0.0330 0.1505 -0.0186
0.0405 -0.0186 0.0305%%%%%%%%可以看出最后得到的协方差是3*3,由此知cov也是按列计算的,m对角线的元素是每列的方差,其余元素是列与列之间的协方差
>> n=cov(M')
n =
0.0042 -0.0061 -0.0006 -0.0110
-0.0061 0.0714 -0.0214 -0.0714
-0.0006 -0.0214 0.0080 0.0326
-0.0110 -0.0714 0.0326 0.1517%%转置后计算协方差,n为4*4,那么对角线元素就是行的方差,其余元素就是行与行之间的协方差。
%%%%%%%%%%%%%%%%%
关于cov计算的结果和手算的结果不同,这里的原因是:
matlab在计算相关矩阵时,把每一列的数作为一个随机变量的样本,每一行作为一个这几个随机变量的联合样本,即第i个随机变量取第k行的样本值时,第j个随机变量也取第k行的样本值。利用这个性质,我们就可以用协方差的公式代入来计算协方差矩阵了。
然而,由于矩阵中给出只是这些随机变量的样本,根据概率论的知识我们知道,由于我们不知道这些随机变量的概率分布(或联合概率分布),我们是不可能计算出这些随机变量的期望、方差或是协方差的,而只能计算出它们的一个无偏估计,即样本均值、样本方差与样本协方差。其计算公式如下所示: