For those interested in this, I've just added slices which can be both read and written to. IMO This gets us a long way towards feature parity with matlab. Code is in the github branch, specifically this file:
http://github.com/malcolmreynolds/GSLL/blob/malcolm-utils/utils/slice.lisp
.. all code should be considered heavily alpha, and I'll probably tweak it quite a lot in the near future.
For those who don't know what I'm talking about, you can now read and write arbitrary bits of a matrix like this:
GSLU> m #<MATRIX-DOUBLE-FLOAT #2A((1.0d0 2.0d0 3.0d0 4.0d0) (5.0d0 6.0d0 7.0d0 8.0d0) (9.0d0 10.0d0 11.0d0 12.0d0))> GSLU> (mslice m :all '(3 1 2 0)) #<MATRIX-DOUBLE-FLOAT #2A((4.0d0 2.0d0 3.0d0 1.0d0) (8.0d0 6.0d0 7.0d0 5.0d0) (12.0d0 10.0d0 11.0d0 9.0d0))> GSLU> (mslice m '(0 2) '(3 0)) #<MATRIX-DOUBLE-FLOAT #2A((4.0d0 1.0d0) (12.0d0 9.0d0))> GSLU> (setf (mslice m '(0 2) '(1 3)) #m(101 102 ^ 103 104)) #<MATRIX-DOUBLE-FLOAT #2A((1.0d0 101.0d0 3.0d0 102.0d0) (5.0d0 6.0d0 7.0d0 8.0d0) (9.0d0 103.0d0 11.0d0 104.0d0))>
Any bug reports or comments gratefully received...
Malcolm