diff options
Diffstat (limited to 'lib/Data')
-rw-r--r-- | lib/Data/Packed/Matrix.hs | 17 | ||||
-rw-r--r-- | lib/Data/Packed/Random.hs | 1 | ||||
-rw-r--r-- | lib/Data/Packed/Vector.hs | 50 |
3 files changed, 24 insertions, 44 deletions
diff --git a/lib/Data/Packed/Matrix.hs b/lib/Data/Packed/Matrix.hs index 438dabc..d5a287d 100644 --- a/lib/Data/Packed/Matrix.hs +++ b/lib/Data/Packed/Matrix.hs | |||
@@ -30,7 +30,7 @@ module Data.Packed.Matrix ( | |||
30 | extractRows, | 30 | extractRows, |
31 | ident, diag, diagRect, takeDiag, | 31 | ident, diag, diagRect, takeDiag, |
32 | liftMatrix, liftMatrix2, liftMatrix2Auto, | 32 | liftMatrix, liftMatrix2, liftMatrix2Auto, |
33 | dispf, disps, dispcf, latexFormat, format, | 33 | dispf, disps, dispcf, vecdisp, latexFormat, format, |
34 | loadMatrix, saveMatrix, fromFile, fileDimensions, | 34 | loadMatrix, saveMatrix, fromFile, fileDimensions, |
35 | readMatrix, fromArray2D | 35 | readMatrix, fromArray2D |
36 | ) where | 36 | ) where |
@@ -314,6 +314,21 @@ formatScaled dec t = "E"++show o++"\n" ++ ss | |||
314 | o = floor $ maximum $ map (logBase 10 . abs) $ toList $ flatten t | 314 | o = floor $ maximum $ map (logBase 10 . abs) $ toList $ flatten t |
315 | fmt = '%':show (dec+3) ++ '.':show dec ++"f" | 315 | fmt = '%':show (dec+3) ++ '.':show dec ++"f" |
316 | 316 | ||
317 | {- | Show a vector using a function for showing matrices. | ||
318 | |||
319 | @disp = putStr . vecdisp ('dispf' 2) | ||
320 | |||
321 | \> disp ('linspace' 10 (0,1)) | ||
322 | 10 |> 0.00 0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1.00 | ||
323 | @ | ||
324 | -} | ||
325 | vecdisp :: (Element t) => (Matrix t -> String) -> Vector t -> String | ||
326 | vecdisp f v | ||
327 | = ((show (dim v) ++ " |> ") ++) . (++"\n") | ||
328 | . unwords . lines . tail . dropWhile (not . (`elem` " \n")) | ||
329 | . f . trans . reshape 1 | ||
330 | $ v | ||
331 | |||
317 | -- | Tool to display matrices with latex syntax. | 332 | -- | Tool to display matrices with latex syntax. |
318 | latexFormat :: String -- ^ type of braces: \"matrix\", \"bmatrix\", \"pmatrix\", etc. | 333 | latexFormat :: String -- ^ type of braces: \"matrix\", \"bmatrix\", \"pmatrix\", etc. |
319 | -> String -- ^ Formatted matrix, with elements separated by spaces and newlines | 334 | -> String -- ^ Formatted matrix, with elements separated by spaces and newlines |
diff --git a/lib/Data/Packed/Random.hs b/lib/Data/Packed/Random.hs index e57ba6e..3b02225 100644 --- a/lib/Data/Packed/Random.hs +++ b/lib/Data/Packed/Random.hs | |||
@@ -24,6 +24,7 @@ import Data.Packed.Matrix | |||
24 | import Data.Packed.Vector | 24 | import Data.Packed.Vector |
25 | import Numeric.LinearAlgebra.Algorithms | 25 | import Numeric.LinearAlgebra.Algorithms |
26 | import Numeric.LinearAlgebra.Interface | 26 | import Numeric.LinearAlgebra.Interface |
27 | import Numeric.LinearAlgebra.Linear | ||
27 | 28 | ||
28 | -- | Obtains a matrix whose rows are pseudorandom samples from a multivariate | 29 | -- | Obtains a matrix whose rows are pseudorandom samples from a multivariate |
29 | -- Gaussian distribution. | 30 | -- Gaussian distribution. |
diff --git a/lib/Data/Packed/Vector.hs b/lib/Data/Packed/Vector.hs index 40dd6b5..81dfa37 100644 --- a/lib/Data/Packed/Vector.hs +++ b/lib/Data/Packed/Vector.hs | |||
@@ -18,9 +18,11 @@ module Data.Packed.Vector ( | |||
18 | fromList, (|>), toList, buildVector, | 18 | fromList, (|>), toList, buildVector, |
19 | dim, (@>), | 19 | dim, (@>), |
20 | subVector, takesV, join, | 20 | subVector, takesV, join, |
21 | constant, linspace, | 21 | -- moved to Numeric.LinearAlgebra.Linear |
22 | vecdisp, | 22 | -- constant, linspace, |
23 | -- moved to Numeric.LinearAlgebra.Interface typeclass | 23 | -- moved to Data.Packed.Matrix |
24 | -- vecdisp, | ||
25 | -- moved to Numeric.LinearAlgebra.Linear typeclass | ||
24 | -- vectorFMax, vectorFMin, vectorFMaxIndex, vectorFMinIndex, | 26 | -- vectorFMax, vectorFMin, vectorFMaxIndex, vectorFMinIndex, |
25 | -- vectorMax, vectorMin, | 27 | -- vectorMax, vectorMin, |
26 | vectorMaxIndex, vectorMinIndex, | 28 | vectorMaxIndex, vectorMinIndex, |
@@ -30,10 +32,9 @@ module Data.Packed.Vector ( | |||
30 | foldLoop, foldVector, foldVectorG | 32 | foldLoop, foldVector, foldVectorG |
31 | ) where | 33 | ) where |
32 | 34 | ||
33 | import Data.Packed.Internal | 35 | import Data.Packed.Internal.Vector |
34 | import Numeric.GSL.Vector | 36 | import Numeric.GSL.Vector |
35 | -- import Data.Packed.ST | 37 | -- import Data.Packed.ST |
36 | import Numeric.LinearAlgebra.Linear | ||
37 | 38 | ||
38 | import Data.Binary | 39 | import Data.Binary |
39 | import Foreign.Storable | 40 | import Foreign.Storable |
@@ -72,19 +73,6 @@ instance (Binary a, Storable a) => Binary (Vector a) where | |||
72 | ------------------------------------------------------------------- | 73 | ------------------------------------------------------------------- |
73 | 74 | ||
74 | 75 | ||
75 | {- | Creates a real vector containing a range of values: | ||
76 | |||
77 | @\> linspace 5 (-3,7) | ||
78 | 5 |> [-3.0,-0.5,2.0,4.5,7.0]@ | ||
79 | |||
80 | Logarithmic spacing can be defined as follows: | ||
81 | |||
82 | @logspace n (a,b) = 10 ** linspace n (a,b)@ | ||
83 | -} | ||
84 | linspace :: (Enum e, Linear Vector e, Element e) => Int -> (e, e) -> Vector e | ||
85 | linspace n (a,b) = addConstant a $ scale s $ fromList [0 .. fromIntegral n-1] | ||
86 | where s = (b-a)/fromIntegral (n-1) | ||
87 | |||
88 | {- | 76 | {- |
89 | vectorFMax :: Vector Float -> Float | 77 | vectorFMax :: Vector Float -> Float |
90 | vectorFMax = toScalarF Max | 78 | vectorFMax = toScalarF Max |
@@ -114,15 +102,6 @@ vectorMinIndex :: Vector Double -> Int | |||
114 | vectorMinIndex = round . toScalarR MinIdx | 102 | vectorMinIndex = round . toScalarR MinIdx |
115 | 103 | ||
116 | 104 | ||
117 | {- | creates a vector with a given number of equal components: | ||
118 | |||
119 | @> constant 2 7 | ||
120 | 7 |> [2.0,2.0,2.0,2.0,2.0,2.0,2.0]@ | ||
121 | -} | ||
122 | constant :: Element a => a -> Int -> Vector a | ||
123 | -- constant x n = runSTVector (newVector x n) | ||
124 | constant = constantD -- about 2x faster | ||
125 | |||
126 | {- | creates a Vector of the specified length using the supplied function to | 105 | {- | creates a Vector of the specified length using the supplied function to |
127 | to map the index to the value at that index. | 106 | to map the index to the value at that index. |
128 | 107 | ||
@@ -130,26 +109,11 @@ constant = constantD -- about 2x faster | |||
130 | 4 |> [0.0,1.0,2.0,3.0]@ | 109 | 4 |> [0.0,1.0,2.0,3.0]@ |
131 | 110 | ||
132 | -} | 111 | -} |
133 | buildVector :: Element a => Int -> (Int -> a) -> Vector a | 112 | buildVector :: Storable a => Int -> (Int -> a) -> Vector a |
134 | buildVector len f = | 113 | buildVector len f = |
135 | fromList $ map f [0 .. (len - 1)] | 114 | fromList $ map f [0 .. (len - 1)] |
136 | 115 | ||
137 | 116 | ||
138 | {- | Show a vector using a function for showing matrices. | ||
139 | |||
140 | @disp = putStr . vecdisp ('dispf' 2) | ||
141 | |||
142 | \> disp ('linspace' 10 (0,1)) | ||
143 | 10 |> 0.00 0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1.00 | ||
144 | @ | ||
145 | -} | ||
146 | vecdisp :: (Element t) => (Matrix t -> String) -> Vector t -> String | ||
147 | vecdisp f v | ||
148 | = ((show (dim v) ++ " |> ") ++) . (++"\n") | ||
149 | . unwords . lines . tail . dropWhile (not . (`elem` " \n")) | ||
150 | . f . trans . reshape 1 | ||
151 | $ v | ||
152 | |||
153 | -- | unzip for Vectors | 117 | -- | unzip for Vectors |
154 | unzipVector :: (Storable a, Storable b, Storable (a,b)) => Vector (a,b) -> (Vector a,Vector b) | 118 | unzipVector :: (Storable a, Storable b, Storable (a,b)) => Vector (a,b) -> (Vector a,Vector b) |
155 | unzipVector = unzipVectorWith id | 119 | unzipVector = unzipVectorWith id |