-- Use hmatrix GSL bindings to do basic statistical analysis. import Control.Monad import Data.Function import Data.List import qualified Data.Packed.Convert as G import qualified Data.Packed.Matrix as G import qualified Data.Packed.Vector as G import qualified Numeric.GSL.Vector as G import qualified Sound.Analysis.Meapsoft as M import System.Environment import System.IO main :: IO () main = do a <- getArgs unless (length a == 1) (error "feature-file") let [fn] = a (Right mp) <- M.read_meap fn let nf = fromIntegral (M.n_frames mp) uf = filter ((== 1) . M.feature_degree) (M.features mp) ar = M.uarray_data mp m = G.matrixFromArray ar ufc = map M.feature_column uf vs = G.toRows (G.extractRows ufc (G.trans m)) r = zip5 (map M.feature_name uf) (zip (map G.vectorMin vs) (map G.vectorMinIndex vs)) (zip (map G.vectorMax vs) (map G.vectorMaxIndex vs)) (zip (map (G.toScalarR G.AbsSum) vs) (map (G.toScalarR G.Norm2) vs)) (map ((/ nf) . G.toScalarR G.AbsSum) vs) mapM_ (putStrLn . show) r