Pardon, in the example above we have a 3 x 3 x 3 nested vector, not a
3 x 3 matrix!

On Jan 23, 2:45 pm, Rock <rocco.ro...@gmail.com> wrote:
> I have a working function to slice multidimensional nested vectors a
> la MATLAB (actually more like NumPy).
>
> I'm using Konrad Hinsen's multi-array library (keep up the great work
> Konrad!). Here's the code (I'm sure it can be greatly improved and
> optimized):
>
> (defn nv-subvec [x & ind]
>   (loop [v x
>          dim 0
>          i ind]
>     (let [[start end step] (first i)
>           other (rest i)]
>       (if (empty? other)
>         (nv-sample v dim start end step)
>         (recur (nv-sample v dim start end step) (inc dim) other)))))
>
> It works like this:
>
> (nv-subvec VECTOR SLICE+)
>
> where each SLICE is [STAR END STEP].
>
> Here's a 3 x 3 matrix:
>
> (def a [[[1 2 3] [4 5 6] [7 8 9]] [[10 11 12] [13 14 15] [16 17 18]]
> [[19 20 21] [22 23 24] [25 26 27]]])
>
> user=> (nv-subvec a [0 3 2] [0 2 1] [1 3 1])
>
> [[[2 3] [5 6]] [[20 21] [23 24]]]
>
> user=> (nv-subvec a [0 3 2] [0 2 1])
>
> [[[1 2 3] [4 5 6]] [[19 20 21] [22 23 24]]]
>
> The result is correct in both cases. Seems to work fine. Of course a
> lot of space for improvement.
>
> Let me know what you think.
>
> On Jan 11, 8:26 am, Konrad Hinsen <konrad.hin...@fastmail.net> wrote:
>
>
>
> > On 10 Jan 2010, at 21:39, extrackc wrote:
>
> > > Have you looked into Incanter project?  I just found out about it
> > > recently.  "Incanter is a Clojure-based, R-like platform for
> > > statistical computing and graphics."  http://incanter.org/
>
> > Incanter uses ParallelColt as its underlying matrix library. While  
> > this is a fine library for working with matrices, it is not a  
> > multidimensional array library. Colt arrays exist only in 1, 2, and 3  
> > dimensions and there are no generic (dimension-independent) operations  
> > on array structure.
>
> > As the huge success of Matlab has shown, a lot can be done with just  
> > matrices and vectors, but anyone who has used an array language (such  
> > as APL) or an equivalent library (such as Python's NumPy) will feel  
> > constrained by such an approach.
>
> > Konrad.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to