【发布时间】:2015-07-09 15:03:34
【问题描述】:
我想用 linq 用一个短语计算相关矩阵。我该怎么做(如果可能的话)?
假设我已经有一个名为 volatilites 的大小为 N 的数组,而 Returns 是一个锯齿状数组,其中 N 个数组的大小都相同。
我也在用:
using stats = MathNet.Numerics.Statistics.ArrayStatistics
这是我想在 LINQ 中编写的代码:
double[,] correlation_matrix = new double[N,N];
for (int i=0; i<N;i++){
for (int j = i + 1; j < N; j++){
correlation_matrix [i,j]= stats.Covariance(Returns[i], Returns[j]) / (volatilities[i] * volatilities[j]); // stores it to check values
}
}
谢谢!
【问题讨论】:
-
我不相信有任何 linq 运算符会创建多维数组,所以我认为您不能将其作为 LINQ 单行来执行。
-
这种简单的方法(for循环)有什么问题?
-
Linq 并不总是您认为的灵丹妙药。如果它有效并且可读,那就别管它了:)
-
@Chris 您可以使用
Aggregate将二维数组填充到 LINQ-fy 中,将该代码转换为单个语句,但我怀疑有人会认为这是一种改进。 -
我同意其他人的观点。您当前的方法非常清楚它的作用。我相信您可以编写一些 LINQy 来执行此操作,但不会比这更清楚了。