将原生类型的操作转换为 Math.NET 数值
Translate operations on native types to Math.NET Numerics
在我从使用本机 F# 类型转变为 Math.NET Numerics 类型的过程中,一个示例将是最有帮助的。
以下如何表示为对 DenseMatrix or DenseVector 类型的操作?我尝试使用下面的代码片段尝试将所有容器表示为 Math.NET 类型,但不断出现各种错误。
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.Random
open MathNet.Numerics.Distributions
open MathNet.Numerics.Statistics
let Tsize = 10
let Tsamps = 5
let expLL (arr : float []) =
arr |> Array.average
let arrL = Array.init Tsamps (
fun i ->
[|
for i in 1 .. Tsize do
yield Exponential.Sample(1.)
|] |> expLL
)
此外,将 float []
或 float [] []
转换为 DenseMatrix
的最快方法是什么?
我认为您的示例没有任何需要以不同方式完成的事情 - Math.NET 提供了很好的线性代数功能,但您实际上并没有在这里进行任何矩阵或向量计算,所以基本数组工作得很好。如果你想把结果变成一个向量,我可能会写这样的东西(稍作调整以避免行太长):
let sample () = Array.init Tsize (fun _ -> Exponential.Sample(1.0)) |> expLL
let vecL = vector [ for i in 1 .. Tsamps -> sample() ]
关于将数据转化为矩阵,有一个matrix
函数:
let nested = [ [1.0; 2.0; 3.0]; [4.0; 5.0; 6.0] ]
let m = matrix nested
在我从使用本机 F# 类型转变为 Math.NET Numerics 类型的过程中,一个示例将是最有帮助的。
以下如何表示为对 DenseMatrix or DenseVector 类型的操作?我尝试使用下面的代码片段尝试将所有容器表示为 Math.NET 类型,但不断出现各种错误。
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.Random
open MathNet.Numerics.Distributions
open MathNet.Numerics.Statistics
let Tsize = 10
let Tsamps = 5
let expLL (arr : float []) =
arr |> Array.average
let arrL = Array.init Tsamps (
fun i ->
[|
for i in 1 .. Tsize do
yield Exponential.Sample(1.)
|] |> expLL
)
此外,将 float []
或 float [] []
转换为 DenseMatrix
的最快方法是什么?
我认为您的示例没有任何需要以不同方式完成的事情 - Math.NET 提供了很好的线性代数功能,但您实际上并没有在这里进行任何矩阵或向量计算,所以基本数组工作得很好。如果你想把结果变成一个向量,我可能会写这样的东西(稍作调整以避免行太长):
let sample () = Array.init Tsize (fun _ -> Exponential.Sample(1.0)) |> expLL
let vecL = vector [ for i in 1 .. Tsamps -> sample() ]
关于将数据转化为矩阵,有一个matrix
函数:
let nested = [ [1.0; 2.0; 3.0]; [4.0; 5.0; 6.0] ]
let m = matrix nested