【问题标题】:math.net conversion of Matrix to Generic.Matrix<float>Matrix 到 Generic.Matrix<float> 的 math.net 转换
【发布时间】:2013-11-12 11:01:08
【问题描述】:
let v = [| 5.0; 2.0; 3.0; 11.0 |]
let m2 = new DenseMatrix(2, 2, v)
let invm = m2.Inverse()
let invt = m2.Transpose()

这里的m2Matrix。但是,invminvtGeneric.Matrix&lt;float&gt;。为什么要进行这种转换?

【问题讨论】:

    标签: f# linear-algebra math.net mathnet-numerics


    【解决方案1】:

    很快,因为DenseMatrix.Inverse()DenseMatrix.Transpose()的签名是

    DenseMatrix.Inverse: unit -> Matrix<float>
    DenseMatrix.Transpose: unit -> Matrix<float>
    

    Matrix 是一个抽象类,它为任何矩阵提供InverseTranspose 方法的通用实现。具体派生子类DenseMatrixSparseMatrixDiagonalMatrix 只是根据每个用例优化存储矩阵数据的方式。

    你可以上当

    let m2 = new DenseMatrix(2, 2, v) :> Matrix<float>
    

    并在矩阵创建后使用泛型类型进行操作。 您可能需要查看相关主题Matrix vs DenseMatrix 了解更多详情。

    【讨论】:

    • 当您使用矩阵函数 (matrix [[ 5.0; 3.0]; [2.0; 11.0]]) 或 F# 扩展的 DenseMatrix 模块中的工厂函数之一创建矩阵时,矩阵将自动属于泛型类型。
    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2018-03-11
    相关资源
    最近更新 更多