C#中的右矩阵除法

时间:2016-11-16 14:53:00

标签: c# .net matlab matrix mathnet

如何在C#中执行正确的矩阵分区?在MATLAB中代码是

AA(I) = ((X(I,:)-mu)/si)*(X(I,:)-mu)';
%where,
%I is index
%AA is a matrix of 1330x1 double
%X is a matrix of 1330x158 double
%mu is a matrix of 1x134 double
%si is a matrix of 134x134 double

现在我使用锯齿状数组来执行所有计算。我应该使用哪个库可以进行有效的矩阵计算?

使用MathNet LinearAlgebra进行更新

 /* MathNet Matrix tests */
            Matrix<double> AA = Matrix<double>.Build.Dense(1330, 1, 1.0);
            Matrix<double> XX = Matrix<double>.Build.Dense(1330, 158, 1.0);
            Matrix<double> si = Matrix<double>.Build.Dense(134, 134, 1.0);
            Matrix<double> mu = Matrix<double>.Build.Dense(1, 134, 1.0);

            AA.Row(0) = ((XX.Row(0) - mu.Row(0)) * si.Inverse()) * (XX.Row(0) - mu.Row(0)).Transpose();

更新

AA.SetRow(0, ((XX.Row(0) - mu.Row(0)) * si.Inverse()) * ((XX.Row(0) - mu.Row(0)).ToRowMatrix().Transpose()));

正如@ ander-biguri所建议的,以上是使用MathNet Numerics库的实现。

问题:我收到一条错误消息,指出Transpose无法应用于矢量。我怎样才能实现AA(I) = ((X(I,:)-mu)/si)*(X(I,:)-mu)'陈述,我在这里做错了什么?

0 个答案:

没有答案