Haskell-矩阵类型之间的转换
我正在使用Haskell-矩阵类型之间的转换,haskell,matrix,Haskell,Matrix,我正在使用Numeric.LinearAlgebra库。这是我的代码: customConv :: Matrix Z customConv = conv2 ((3><3)[1..]) ((1><1)[1.1]) customConv::Matrix Z customConv=conv2((3>这取决于您希望如何对值进行四舍五入。 如果要舍入到最接近的整数,则可以使用cmap round: λ> cmap round $ conv2 ((3><3)[1
Numeric.LinearAlgebra
库。这是我的代码:
customConv :: Matrix Z
customConv = conv2 ((3><3)[1..]) ((1><1)[1.1])
customConv::Matrix Z
customConv=conv2((3>这取决于您希望如何对值进行四舍五入。
如果要舍入到最接近的整数,则可以使用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 ]
这意味着它就像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 ]
这意味着它会将任何内容转换为Z
的容器。它通过裁剪小数来实现这一点。这取决于您希望如何对值进行四舍五入。
如果要舍入到最接近的整数,则可以使用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 ]
这意味着它就像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 ]
这意味着它将把任何东西转换成Z
的容器。它通过裁剪小数来实现