好的,我正在使用以下库:http://www.codeproject.com/KB/recipes/AdvancedMatrixLibrary.aspx
我希望计算某些矩阵的特征向量。我不知道如何制定代码。
到目前为止,我一直在尝试:
Matrix MatrixName = new Matrix(n, n);
Matrix vector = new Matrix(n, 0);
Matrix values = new Matrix(n, 0);
Matrix.Eigen(MatrixName[n, n], values, vector);
但是它说最好的重载方法匹配有一些无效的参数。我知道图书馆有效,但我不知道如何制定我的c#代码。
任何帮助都会很棒!
答案 0 :(得分:6)
查看图书馆,Eigen方法的签名如下:
public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
有一些错误:
请注意d和v参数旁边的out
关键字。您需要将out关键字添加到对Eigen的调用中。
当您发送元素时,代码需要Matrix作为第一个参数。因此,MatrixName[n, n]
需要更改为MatrixName
。
您不需要实例化矢量和值Matrices,因为Eigen方法会为您执行此操作,并且会返回您发送的两个参数中的值,这要归功于out关键字。还有一点需要注意的是,您将收到如下输出:
值为[n + 1,1]矩阵
vector将是[n + 1,n + 1] Matrix
不如您对初始代码所期望的矩阵(n,0)。
代码如下所示:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
答案 1 :(得分:5)
您的代码应如下所示:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
C#out
关键字意味着方法Eigen
会为您创建对象,因此您不应该这样做new Matrix(n, 0);