0
我正在使用Numeric.LinearAlgebra
库。这是我的代码:Haskell - 矩阵类型之间的转换
customConv :: Matrix Z
customConv = conv2 ((3><3)[1..]) ((1><1)[1.1])
我的问题是,我想的是,输出将是Matrix Z
类型。
现在的类型不是Z
因为CONV是1.1
是否有任何功能,圆矩阵的所有值,然后用此做呢?
我正在使用Numeric.LinearAlgebra
库。这是我的代码:Haskell - 矩阵类型之间的转换
customConv :: Matrix Z
customConv = conv2 ((3><3)[1..]) ((1><1)[1.1])
我的问题是,我想的是,输出将是Matrix Z
类型。
现在的类型不是Z
因为CONV是1.1
是否有任何功能,圆矩阵的所有值,然后用此做呢?
这取决于你想如何舍入值。 如果要舍入到最接近的整数,那么你可以使用cmap round
:
λ> cmap round $ conv2 ((3><3)[1..]) ((1><1)[1.1 :: R]) :: Matrix Z
(3><3)
[ 1, 2, 3
, 4, 6, 7
, 8, 9, 10 ]
cmap
具有以下特征:
cmap :: (Element b, Container c e) => (e -> b) -> c e -> c b
这意味着它就像fmap
仅受限于可保持类型由hmatrix容器。
相反,如果你要裁剪的小数,你可以使用toZ
:
λ> toZ $ conv2 ((3><3)[1..]) ((1><1)[1.1 :: R]) :: Matrix Z
(3><3)
[ 1, 2, 3
, 4, 5, 6
, 7, 8, 9 ]
toZ
具有以下特征:
toZ :: Container c e => c e -> c Z
这意味着它将东西转换成的容器Z
。它通过裁剪小数来完成。