F#列表到矢量MathNet.Numerics

时间:2014-03-12 18:14:53

标签: list vector f#

我正在尝试制作一个random列表并使用MathNet.Numerics将其转换为矢量。但我的F#Interactive返回(下面)而不是生成的值。以下是我的代码。

  

val cumRC:DenseVector

会期望返回这样的东西。

cumRC : float list =
  [0.9888577146; 1.013791155; 0.9816407702; 0.9967110693; 1.000800844;
   1.004584863; 0.999112488; 0.9908830826; 1.009421593; 1.00276232]
open MathNet.Numerics
open MathNet.Numerics.Distributions
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.LinearAlgebra.Double
open MathNet.Numerics.LinearAlgebra.Generic.FSharpExtensions

let genRandom count =
    let rnd = Normal(0.0,1.0)

    List.init count (fun _ -> 1.0 + rnd.Sample()/100.0)

let va = genRandom 10

let cumVa =  List.scan (fun numbers n -> numbers * n) 1.0 va |> List.tail |> DenseVector.ofList     

1 个答案:

答案 0 :(得分:0)

我没有使用MathNet,但删除特定于该包的部件会产生预期的结果。因此剥离MathNet部分的代码是:

let rnd = new System.Random()
let genRandom count =   
    List.init count (fun _ ->  rnd.Next())

let va = genRandom 10

let cumVa =  List.scan (fun numbers n -> numbers * n) 1 va |> List.tail 

产生:

 val cumVa : int list =
  [893568767; -84811745; 1485049601; -1376682691; -278974486; -902716576;
   -1616974272; 1049846592; -1969542592; -2077634944]

所以最有可能看的是DenseVector的文档。一个快速的谷歌说它没有ofList功能。