生成100 x 100个数据点时Math.NET的内存异常

时间:2016-10-31 20:49:27

标签: .net f# f#-interactive mathnet

当我尝试使用F#和Math.NET使用以下代码生成100 x 100数据点时:

let theta0_vals = Generate.LinearSpaced(100, -10.0, 10.0)
let theta1_vals = Generate.LinearSpaced(100, -1.0, 4.0)

let fct a b = 2.0 * a * b

let points = [for i in theta0_vals -> [for j in theta1_vals -> fct (float i) (float j) ]]

然后我得到以下例外:

  

[System.NullReferenceException:对象引用未设置为对象的实例   在< 57a12c4adff9fae1a74503834a2ca157>中的Microsoft.FSharp.Core.Operators.FailurePattern(System.Exception错误)[0x00001]:0   在< 5707a356ddab8ea7a745038356a30757>中的Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ReraiseIfWatsonable(System.Exception exn)[0x0002d]:0   在Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ErrorLogger.ErrorRecovery(Microsoft.FSharp.Compiler.ErrorLogger + ErrorLogger x,System.Exception exn,Microsoft.FSharp.Compiler.Range + range m)[0x00087] in< 5707a356ddab8ea7a745038356a30757> :0   在< 5707a356ddab8ea7a745038356a30757>中的Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ReraiseIfWatsonable(System.Exception exn)[0x00040]:0   在Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ErrorLogger.ErrorRecovery(Microsoft.FSharp.Compiler.ErrorLogger + ErrorLogger x,System.Exception exn,Microsoft.FSharp.Compiler.Range + range m)[0x00087] in< 5707a356ddab8ea7a745038356a30757> :0   在< 5707a356ddab8ea7a745038356a30757>中的Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ReraiseIfWatsonable(System.Exception exn)[0x00040]:0   在Microsoft.FSharp.Compiler.ErrorLogger + ErrorLoggerExtensions.ErrorLogger.ErrorRecovery(Microsoft.FSharp.Compiler.ErrorLogger + ErrorLogger x,System.Exception exn,Microsoft.FSharp.Compiler.Range + range m)[0x00087] in< 5707a356ddab8ea7a745038356a30757> :0

我在16 GB内存的Mac上使用Xamarin Studio中的F#interactive。我在Matlab做同样的事情没有问题。

这是F#和/或Math.NET的限制吗?

1 个答案:

答案 0 :(得分:1)

感谢您的投入。它在可执行文件中运行时工作正常,并且在从命令行运行交互时也可以工作。我想在Xamarin Studio下集成交互式运行一定是个问题。