Distrubtions.jl MvNormal 的样本有 N 个变量 returns 一个标量而不是大小为 N 的元组
A sample for Distrubtions.jl MvNormal with N variables returns a scalar instead of tuple of size N
所以我使用 1Distributions.jl1,并且我从多变量正态样本中采样 - 我希望 N
随机变量的样本大小为 N
,而不是 1
.
这是我的代码 - 我是在误解它在做什么,还是我的代码是错误的?
using Distributions
using LinearAlgebra
N = 3
mu =[1,1,1]
cov = Matrix(1.0I, N, N)
d = MvNormal(mu,cov)
x =rand(d,100)
println(x[1])
当我查看第一个样本时,它不是长度 3,而是一个标量:
julia> include("dist.jl")
-0.02020323039551508
结果返回为 Matrix
而不是一组元组:
julia> rand(d,10)
3×10 Matrix{Float64}:
0.99872 1.67639 2.13745 0.961745 … 1.74531 0.831261 0.104456 2.57985
-0.503303 1.54691 1.72998 1.73453 1.02923 0.717212 2.99329 0.181151
0.967349 0.786567 2.02966 1.02071 0.892649 3.63519 -0.374087 -0.347399
x[1]
刚刚返回了矩阵的第一个元素。
因此您可以获得第一个元素,因为(@view
是为了避免数据复制):
julia> @view x[:,1]
3-element view(::Matrix{Float64}, :, 1) with eltype Float64:
0.7978125656624844
1.6078955127154368
1.376647003099504
所以我使用 1Distributions.jl1,并且我从多变量正态样本中采样 - 我希望 N
随机变量的样本大小为 N
,而不是 1
.
这是我的代码 - 我是在误解它在做什么,还是我的代码是错误的?
using Distributions
using LinearAlgebra
N = 3
mu =[1,1,1]
cov = Matrix(1.0I, N, N)
d = MvNormal(mu,cov)
x =rand(d,100)
println(x[1])
当我查看第一个样本时,它不是长度 3,而是一个标量:
julia> include("dist.jl")
-0.02020323039551508
结果返回为 Matrix
而不是一组元组:
julia> rand(d,10)
3×10 Matrix{Float64}:
0.99872 1.67639 2.13745 0.961745 … 1.74531 0.831261 0.104456 2.57985
-0.503303 1.54691 1.72998 1.73453 1.02923 0.717212 2.99329 0.181151
0.967349 0.786567 2.02966 1.02071 0.892649 3.63519 -0.374087 -0.347399
x[1]
刚刚返回了矩阵的第一个元素。
因此您可以获得第一个元素,因为(@view
是为了避免数据复制):
julia> @view x[:,1]
3-element view(::Matrix{Float64}, :, 1) with eltype Float64:
0.7978125656624844
1.6078955127154368
1.376647003099504