diff options
Diffstat (limited to 'lib/Data/Packed/Matrix.hs')
-rw-r--r-- | lib/Data/Packed/Matrix.hs | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/lib/Data/Packed/Matrix.hs b/lib/Data/Packed/Matrix.hs index 66e5082..a8e998f 100644 --- a/lib/Data/Packed/Matrix.hs +++ b/lib/Data/Packed/Matrix.hs | |||
@@ -36,10 +36,10 @@ module Data.Packed.Matrix ( | |||
36 | import Data.Packed.Internal | 36 | import Data.Packed.Internal |
37 | import qualified Data.Packed.ST as ST | 37 | import qualified Data.Packed.ST as ST |
38 | import Data.Packed.Vector | 38 | import Data.Packed.Vector |
39 | import Data.List(transpose,intersperse) | ||
40 | import Data.Array | 39 | import Data.Array |
41 | import System.Process(readProcess) | 40 | import System.Process(readProcess) |
42 | import Text.Printf(printf) | 41 | import Text.Printf(printf) |
42 | import Data.List(transpose) | ||
43 | 43 | ||
44 | -- | creates a matrix from a vertical list of matrices | 44 | -- | creates a matrix from a vertical list of matrices |
45 | joinVert :: Element t => [Matrix t] -> Matrix t | 45 | joinVert :: Element t => [Matrix t] -> Matrix t |
@@ -85,7 +85,7 @@ adaptBlocks ms = ms' where | |||
85 | rs = map (compatdim . map rows) ms | 85 | rs = map (compatdim . map rows) ms |
86 | cs = map (compatdim . map cols) (transpose ms) | 86 | cs = map (compatdim . map cols) (transpose ms) |
87 | szs = sequence [rs,cs] | 87 | szs = sequence [rs,cs] |
88 | ms' = partit bc $ zipWith g szs (concat ms) | 88 | ms' = splitEvery bc $ zipWith g szs (concat ms) |
89 | 89 | ||
90 | g [Just nr,Just nc] m | 90 | g [Just nr,Just nc] m |
91 | | nr == r && nc == c = m | 91 | | nr == r && nc == c = m |
@@ -249,13 +249,6 @@ shfc n z@ (a:+b) | |||
249 | 249 | ||
250 | -} | 250 | -} |
251 | 251 | ||
252 | dsp' :: String -> [[String]] -> String | ||
253 | dsp' sep as = unlines . map unwords' $ transpose mtp where | ||
254 | mt = transpose as | ||
255 | longs = map (maximum . map length) mt | ||
256 | mtp = zipWith (\a b -> map (pad a) b) longs mt | ||
257 | pad n str = replicate (n - length str) ' ' ++ str | ||
258 | unwords' = concat . intersperse sep | ||
259 | 252 | ||
260 | {- | Creates a string from a matrix given a separator and a function to show each entry. Using | 253 | {- | Creates a string from a matrix given a separator and a function to show each entry. Using |
261 | this function the user can easily define any desired display function: | 254 | this function the user can easily define any desired display function: |
@@ -266,7 +259,7 @@ this function the user can easily define any desired display function: | |||
266 | 259 | ||
267 | -} | 260 | -} |
268 | format :: (Element t) => String -> (t -> String) -> Matrix t -> String | 261 | format :: (Element t) => String -> (t -> String) -> Matrix t -> String |
269 | format sep f m = dsp' sep . map (map f) . toLists $ m | 262 | format sep f m = table sep . map (map f) . toLists $ m |
270 | 263 | ||
271 | {- | 264 | {- |
272 | disp m f = putStrLn $ "matrix ("++show (rows m) ++"x"++ show (cols m) ++")\n"++format " | " f m | 265 | disp m f = putStrLn $ "matrix ("++show (rows m) ++"x"++ show (cols m) ++")\n"++format " | " f m |
@@ -385,7 +378,7 @@ extractRows l m = fromRows $ extract (toRows $ m) l | |||
385 | 378 | ||
386 | -} | 379 | -} |
387 | repmat :: (Element t) => Matrix t -> Int -> Int -> Matrix t | 380 | repmat :: (Element t) => Matrix t -> Int -> Int -> Matrix t |
388 | repmat m r c = fromBlocks $ partit c $ replicate (r*c) m | 381 | repmat m r c = fromBlocks $ splitEvery c $ replicate (r*c) m |
389 | 382 | ||
390 | -- | A version of 'liftMatrix2' which automatically adapt matrices with a single row or column to match the dimensions of the other matrix. | 383 | -- | A version of 'liftMatrix2' which automatically adapt matrices with a single row or column to match the dimensions of the other matrix. |
391 | liftMatrix2Auto :: (Element t, Element a, Element b) | 384 | liftMatrix2Auto :: (Element t, Element a, Element b) |