从Matlab到C#的多元正态随机数

本文关键字:随机数 Matlab | 更新日期: 2023-09-27 18:01:05

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

与Matlab中的函数不同,matrixnormal需要三个输入:均值矩阵(M(、行的cov矩阵(V(和列的cov阵(K(。文献指出,如果M的维度是d-by-M,那么V是d-by-d,K是M-by-M。我有这两个输入矩阵(1x12平均矩阵和12x12 cov矩阵(用于Matlab。我想将这两个输出转换为三个输入矩阵。

均值矩阵部分不是问题,但我不知道如何转换cov部分。我不擅长统计。有人能帮我做这个吗?谢谢,

从Matlab到C#的多元正态随机数

这不是一个优雅的解决方案,但我认为它可以工作。。。

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

Matrix covariance = new Matrix( [some numbers]) // basically just copy the covariance values
Matrix rowCov = covariance.getRowCovariance()
Matrix colCov = covariance.getColumnCovariance()