如果矩陣中的每個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