我想使用 Math.Net Numerics 库在 C# 中的给定矩阵中执行列数组与每个列数组/向量的逐点乘法。
关于这样的操作的文档很少,到目前为止,我有下面的代码不起作用。我正在尝试使用 LINQ,因为我更喜欢 for 循环。我在使用 LINQ 时遇到的问题是,当我尝试将矩阵的每一列枚举为向量并执行 PointwiseMultiply() 方法时,我无法重新分配矩阵。
矩阵fitKernel是我的矩阵,我想将每列逐点乘以wF列数组并使用 LINQ更新我的矩阵fitKernel 。fitKernel 是 9 x 5 矩阵,而 wF 是一个 9 x 1 double[] 数组,我在下面的 LINQ 中将其转换为 Vector。
Matrix<double> fitKernel = Matrix<double>.Build.DenseOfColumnArrays(c1, c2, c3, c4, ones);
double[] wF = Enumerable.Repeat(1.0, 9).ToArray();
fitKernel = fitKernel.EnumerateColumns()
.Select(v => v.PointwiseMultiply(Vector<double>.Build.DenseOfArray(wF)));
上面使用 EnumerateColumns() 的代码返回向量的 IEnumerable,但是当我尝试将值分配给 fitKernel 时,它抱怨将 Enumerable 类型分配给矩阵。