乘以列主矩阵linq

问题描述 投票:-1回答:1

如您所见,对于行主矩阵来说,乘法很容易。

但在我的情况下我有列主矩阵,我如何使用linq乘以列主矩阵?

enter image description here


行主矩阵

double[][] M1 = { {a1, b1}, {a2, b2}, {a3, b3} };
double[] M2 = { a, b };

double[] M3 = M1.Select(inner => inner.Zip(M2, (x, y) => x*y).Sum()).ToArray();

列主要矩阵

double[][] M1 = {{a1,a2,a3},{b1,b2,b3}};

double[] M2 = { a, b };

double[] M3 = ?;

这些都是预期的结果。 (抱歉对于编写样本太懒了)。

A = a1*a + b1*b;
B = a2*a + b2*b;
C = a3*a + b3*b;
c# linq matrix
1个回答
0
投票

我错过了groupby解决方案。

double[] M3 = M1.SelectMany(inner => inner.Select((x, i) => (x, i))
                  .GroupBy(t => t.i, t => t.x, (t, e) => 
                      e.Zip(M2, (x, y) => x * y).Sum()))
                        .ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.