【问题标题】:Calculating EigenVectors in C# using Advanced Matrix Library in C#. NET使用 C# 中的高级矩阵库计算 C# 中的特征向量。网
【发布时间】:2010-12-09 15:55:01
【问题描述】:

好的,伙计们,我正在使用以下库: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# 代码。

任何帮助都会很棒!

【问题讨论】:

    标签: .net c#-4.0 matrix eigenvector


    【解决方案1】:

    查看Library,Eigen方法的签名是这样的:

    public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
    

    有几个错误:

    1. 注意 d 和 v 参数旁边的 out 关键字。您需要将 out 关键字添加到对 Eigen 的调用中。

    2. 当您发送一个元素时,代码需要一个矩阵作为第一个参数。因此,MatrixName[n, n] 需要更改为 MatrixName

    3. 您不需要实例化向量和值矩阵,因为 Eigen 方法会为您执行此操作,并将返回您发送的两个参数中的值,这要归功于 out 关键字。还有一点需要注意的是,您将收到如下输出:

      • 值将是 [n+1,1] 矩阵

      • 向量将是一个 [n+1,n+1] 矩阵

    不像您对初始代码所期望的那样 Matrix(n, 0)。

    代码将如下所示:

    Matrix MatrixName = new Matrix(n, n);
    Matrix vector;
    Matrix values;
    
    Matrix.Eigen(MatrixName, out values, out vector);
    

    【讨论】:

      【解决方案2】:

      您的代码应如下所示:

      Matrix MatrixName = new Matrix(n, n);
      Matrix vector;
      Matrix values;
      
      Matrix.Eigen(MatrixName, out values, out vector);
      

      C# out关键字表示方法Eigen会为你创建对象,所以你不应该这样做new Matrix(n, 0);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        相关资源
        最近更新 更多