python移植Matlab corr2cov函数

用Matlab做计算的时候发现有corr2cov函数,不知道和python的相关性函数有没有什么不同,数学基础都忘光了,也不想交叉对比源代码,直接重新用python写一遍

import numpy as np

def corr2cov(ExpSigma,ExpCorrC):
    '''
    Argument checking
    ExpSigma  [1 by N] standard deviations
    ExpCorrC  [N by N] correlation coefficients
    N         [scalar] number of processes
    '''
    N=ExpSigma.shape[0]
    if ExpCorrC.shape[0]!=N or ExpCorrC.shape[1]!=N:
        raise ValueError('corr2cov:mismatchSigmaCorrC')
    return ExpCorrC*np.dot(ExpSigma.reshape(1,-1).T,ExpSigma.reshape(1,-1))

Matlab多了几步判断输入参数的代码,相信没多少人用这个函数只输入一个Sigma,所以我偷个小懒

以下是根据官网实例的测试代码:

ExpSigma = np.array([0.5,  2.0])

ExpCorrC = np.array([1.0, -0.5,
           -0.5,  1.0])
ExpCorrC=ExpCorrC.reshape(2,2)
print (corr2cov(ExpSigma=ExpSigma,ExpCorrC=ExpCorrC))

结果如下:

[[ 0.25 -0.5 ]
 [-0.5   4.  ]]

其实核心代码就一行,做矩阵乘法

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值