numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)

matlab是标准的,numpy相当于转置后计算

>> x = [2,0,-1.4;2.2,0.2,-1.5;2.4,0.1,-1;1.9,0,-1.2]

x =

2.0000    0            -1.4000
2.2000    0.2000    -1.5000
2.4000    0.1000    -1.0000
1.9000    0            -1.2000

>> cov(x)

ans =

0.0492        0.0142      0.0192
0.0142        0.0092      -0.0058
0.0192        -0.0058     0.0492

 

>> xt=x'

xt =

2.0000     2.2000         2.4000       1.9000
0             0.2000         0.1000       0
-1.4000    -1.5000        -1.0000     -1.2000

>> cov(xt)

ans =

2.9200   3.1600   2.9500   2.6700
3.1600   3.4300   3.1750   2.8850
2.9500   3.1750   3.0100   2.7050
2.6700   2.8850   2.7050    2.4433

 

np.array(x).T
array([[ 2. , 2.2, 2.4, 1.9],
         [ 0. , 0.2, 0.1, 0. ],
         [-1.4, -1.5, -1. , -1.2]])

>>> print(np.cov(np.array(x).T))
[[ 0.04916667 0.01416667 0.01916667]
[ 0.01416667 0.00916667 -0.00583333]
[ 0.01916667 -0.00583333 0.04916667]]

 

np.array(x)
array([[ 2. , 0. , -1.4],
          [ 2.2, 0.2, -1.5],
          [ 2.4, 0.1, -1. ],
          [ 1.9, 0. , -1.2]])

>>> print(np.cov(np.array(x)))
[[ 2.92 3.16 2.95 2.67 ]
[ 3.16 3.43 3.175 2.885 ]
[ 2.95 3.175 3.01 2.705 ]
[ 2.67 2.885 2.705 2.44333333]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值