如何在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)'
陈述,我在这里做错了什么?