我是 F# 的初学者。我知道有一种方法可以使用 PowerPack.dll 创建双矩阵:
let B = matrix [ [ 1.0; 7.0 ];
[ 1.0; 3.0 ] ]
如何使用我自己类型的元素创建矩阵(例如使用 [,] 而不是 Double),所以它看起来像:
let B = matrix [ [ [1,2]; [3,4] ];
[ [7,8]; [5,6] ] ]
最佳答案
我同意在处理数字时应主要使用矩阵。标准非通用矩阵类型(您可以使用 matrix
函数创建)适用于 float
类型的数字。如果您想使用其他数字类型,可以使用 Matrix.Generic
模块,该模块包含处理通用矩阵(包含任何类型)的功能。
您也可以使用通用矩阵来存储元组(如果需要)。可以使用 ofList
函数创建通用矩阵。您还可以为此定义一个函数以获得更好的语法:
let anymatrix = Matrix.Generic.ofList
let B = anymatrix [ [ [1,2]; [3,4] ];
[ [7,8]; [5,6] ] ]
要使用通用矩阵,您可以使用 Matrix.Generic
模块:
let Bt = Matrix.Generic.transpose B
通常,您只会将矩阵与数字类型一起使用,因为许多运算都需要一些算术运算才能起作用。这将适用于所有基本数字类型(例如 int
),您还可以使用 GlobalAssociations
discussed here 为您自己的类型提供算术运算。 .
但是,如果您只想存储一些值,那么还有其他(更合适的)数据类型。您还可以使用表示可变二维数组的 Array2D
。
关于F#:如何创建除 Double 之外的任何其他类型的元素矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518000/