On 09.01.2010, at 21:22, Rock wrote:

I'm working on implementing a solution for extracting slices of
multidimensional vectors, in the sense of vectors of vectors. I'm
taking the recursive route.

I have some code for working with nested vectors here:

        
http://code.google.com/p/clj-multiarray/source/browse/src/clj_multiarray/nested_vectors.clj

It's work in progress, but it may give you some ideas.

Anyway, I'm trying to follow the MATLAB path. For instance, suppose
this is a 5x5 matrix:

(def a [[2 3 5 7 11] [13 17 19 23 29] [31 37 41 43 47] [53 59  61
67   71]  [73   79   83   89   97]])

This:

(submvec a [[0 2 4] [0 2 4]])

would yield:

[[2 5 11] [13 19 29] [31 41 47] [53 61 71] [73 83 97]] (actually a
sequence)

In other words, [0 2 4] is to be interpreted as [START STRIDE END].
STRIDE should be optional.

That's my "sample" function:

(defn nv-sample
  [x dim start end step]
  (assert (vector? x))
  (if (zero? dim)
    (vec (take-nth step (subvec x start end)))
    (vec (map #(nv-sample % (dec dim) start end step) x))))

Just call it once for each dimension (0 and 1).

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