Haskell中的数字矩阵块

时间:2015-07-17 17:00:46

标签: haskell

有了数字矩阵,如何使用Haskell从中提取切片?

示例:

Int -> Int -> Int -> Int -> [Int] -> Int -> Int -> [Int]
getTile height width x y xs matrix_height matrix_width = ...
getTile 2 2 1 1 [1,2,3,4,5,
                 6,7,8,9,10] 2 5 = [2,3
                                    7,8]

2 个答案:

答案 0 :(得分:0)

您可能希望使用住宿加早餐套餐中的Numeric.Matrix。它的效率更高,并且有一种构建子矩阵的好方法(固定,选择不合适)。

getTile height width x y m = matrix getElem (height,width) where
    getElem (i,j) = m `at` (i+x-1, j+y-1)

Numeric.Matrix使用基于1的索引,因此可能会使问题复杂化。

答案 1 :(得分:0)

submatrix

import Data.Matrix

let flat_matrix=[1,2,3,4,5,6,7,8,9,10]
let mat = Data.Matrix.fromList width height flat_matrix
let tile = submatrix start_row end_row start_column end_column mat