[英]Haskell - Convert between matrix types
我正在使用Numeric.LinearAlgebra
库。 这是我的代码:
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
的容器。 它通过裁剪小数来实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.