如果矩阵中的每个2x2子矩阵具有偶数行和列,我需要得到一个列表。例如,假设我们有一个4×4的矩阵(1);该函数应该计算它像以下(我只是想指出的是,给定的矩阵可以是任意的n×m矩阵,其中n和m甚至):来自矩阵的所有2x2子矩阵中的每个元素的总和
(1): [ [1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10,11,12],
[13,14,15,16] ]
sum2x2 of (1):
1. 1+2+5+6 = 14
2. 3+4+7+8 = 22
3. 9+10+13+14 = 46
.
.
result: [14, 22, 46, ...]
我想用Data.Matrix和submatrix
创建这个清单。而功能应具有以下模式:
sum2x2 :: Matrix Double -> [Double]
我已经开始写这个功能,但我不知道如何从这里着手:
sum2x2 :: Matrix Double -> [Double]
sum2x2 m = if even (ncols m) && even (nrows m)
then what?
else error "sum2x2 takes only even matrices"
submatrix
作品像下面这样:
-- | /O(1)/. Extract a submatrix given row and column limits.
-- Example:
--
-- > (1 2 3)
-- > (4 5 6) (2 3)
-- > submatrix 1 2 2 3 (7 8 9) = (5 6)
submatrix :: Int --^Starting row
-> Int --^Ending row
-> Int --^Starting column
-> Int --^Ending column
-> Matrix a
-> Matrix a
所以,我有这个概念。我如何使用列表理解在Haskell中实现?
'Data.Matrix'封装包括很好[分裂块(https://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html#g:8)功能像“子矩阵”。他们是这项工作非常方便的工具。 – Redu