繁体   English   中英

Haskell-在矩阵类型之间转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM