乘以列主矩阵linq
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘以列主矩阵linq相关的知识,希望对你有一定的参考价值。
如您所见,对于行主矩阵来说,乘法很容易。
但在我的情况下我有列主矩阵,我如何使用linq乘以列主矩阵?
行主矩阵
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;
答案
我错过了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();
以上是关于乘以列主矩阵linq的主要内容,如果未能解决你的问题,请参考以下文章