changeset 461:338ef3a95d8e

Use zipped and unzipped in channels
author Chris Cannam
date Fri, 25 Oct 2013 11:50:59 +0100
parents b3106795bbbf
children bf457f62033d
files src/may/stream/channels.yeti
diffstat 1 files changed, 3 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/may/stream/channels.yeti	Fri Oct 25 11:50:35 2013 +0100
+++ b/src/may/stream/channels.yeti	Fri Oct 25 11:50:59 2013 +0100
@@ -14,34 +14,11 @@
    (raw' v is ~double[] -> ~double[] = v;
     raw' as vector -> ~double[]);
         
-interleaved m = 
-   ({ columns, rows } = (mat.size m);
-    if rows == 1 then
-        mat.getRow 0 m
-    else
-        v = new double[columns * rows];
-        for [0..rows-1] do row:
-            for [0..columns-1] do col:
-                v[col * rows + row] := mat.at m row col;
-            done;
-        done;
-        vec.vector v;
-    fi);
+interleaved m =
+    bf.zipped (mat.asRows m);
 
 deinterleaved channels b =
-    if channels == 1 then
-        mat.newRowVector b
-    else
-        rows = (vec.length b) / channels;
-        vv = array (map \(new double[rows]) [0..channels-1]);
-        v = raw b;
-        for [0..rows-1] do row:
-            for [0..channels-1] do col:
-                vv[col][row] := v[channels * row + col];
-            done
-        done;
-        mat.newMatrix (RowMajor ()) (map vec.vector vv);
-    fi;
+    mat.newMatrix (RowMajor ()) (list (bf.unzipped channels b));
 
 mixedDown m =  //!!!doc: average, not sum
    ({ columns, rows } = (mat.size m);