F#:如何创建除Double之外的任何其他类型的元素矩阵

Nik*_*ike 2 f# types matrix

我是F#的初学者.我知道有使用PowerPack.dll创建Double Matrix的方法:

let B = matrix [ [ 1.0; 7.0 ];
                 [ 1.0; 3.0 ] ]
Run Code Online (Sandbox Code Playgroud)

如何使用我自己的类型的元素创建矩阵(例如使用[,]而不是Double),所以它看起来像:

let B = matrix [ [ [1,2]; [3,4] ];
                 [ [7,8]; [5,6] ] ]
Run Code Online (Sandbox Code Playgroud)

Tom*_*cek 9

我同意在处理数字时主要应使用矩阵.标准的非泛型矩阵类型(可以使用该matrix函数创建)与数字类型一起使用float.如果要使用其他数字类型,可以使用Matrix.Genericmodule,其中包含使用泛型矩阵(包含任何类型)的功能.

您也可以使用通用矩阵来存储元组(如果需要).可以使用该ofList函数创建通用矩阵.您还可以为此定义一个函数以获得更好的语法:

let anymatrix = Matrix.Generic.ofList
let B = anymatrix [ [ [1,2]; [3,4] ]; 
                    [ [7,8]; [5,6] ] ]
Run Code Online (Sandbox Code Playgroud)

要使用通用矩阵,您可以使用以下Matrix.Generic模块:

let Bt = Matrix.Generic.transpose B
Run Code Online (Sandbox Code Playgroud)

通常,您只使用数字类型的矩阵,因为许多操作需要一些算术才能工作.这适用于所有基本数字类型(例如int),您也可以使用GlobalAssociations 此处讨论的方式为您自己的类型提供算术.

但是,如果您只想存储一些值,那么还有其他(更合适的)数据类型.您也可以使用Array2D它代表一个可变的二维数组.