5

我正在将在 Matlab 上编写的代码转换为 C#。在 Matlab 中,有一个名为 mvnrnd 的函数,它是一个多元正态随机数生成器。这需要两个输入:nxd 平均矩阵和 d-by-d cov 矩阵。我用谷歌搜索,发现 math.net matrixnormal 确实做同样的事情。

与 Matlab 中的函数不同,matrixnormal 需要三个输入:均值矩阵 (M)、行 (V) 的 cov 矩阵和列 (K) 的 cov 矩阵。文档说明如果 M 的维度是 d-by-m,则 V 是 d-by-d,K 是 m-by-m。我有这两个输入矩阵(Matlab 的 1x12 平均矩阵和 12x12 cov 矩阵。我想将这两个输入转换为矩阵法线的三个输入。

平均矩阵部分不是问题,但我不知道如何转换 cov 部分。我不擅长统计。有人可以帮我做到这一点吗?谢谢,

4

1 回答 1

0

这不是一个优雅的解决方案或任何东西,但我认为它可以工作......

为什么不通过填充值来创建协方差矩阵,然后对其调用 ColumnCovariance() 和 RowCovariance() 呢?我从来没有写过 C#,所以我不知道语法,但这应该给你一个大致的想法:

Matrix covariance = new Matrix( [some numbers]) // basically just copy the covariance values
Matrix rowCov = covariance.getRowCovariance()
Matrix colCov = covariance.getColumnCovariance()
于 2014-05-06T22:28:34.410 回答