Thanks to both of
you.
My code works now!
I used one large index/mapping matrix 18432
x 32 to get to data in a 2048 x 9 matrix.
The time used to run the code changed
from 180sec (for loop) to 10sec (index/mapping)!
John W Eaton wrotte:
"This happens because when you make a range
using matrix values, only
| the first element of the matrix values are
used. In other words, if
| M1 and M2 are matrices, then the range
_expression_ M1:M2 is equivalent
| to M1(1):M2(2). Octave has this
"feature" for compatibility with
| Matlab.
"
Do any of you know why it works like this?
Is it a feature?
(I originally would have expected 3
ranges...)
i=1:3;
a=[1,2,3];
b=[3,4,5];
a(i):b(i)
ans = 1 2 3
Thanks!
Jorgen
On Dec 5, 2006, at 6:39 PM, Jordi Gutierrez Hermoso
wrote:
> There are cute little indexing hacks that can be accomplished
if you
> remember that Octave stores matrices in Fortran column-major
order. In
> other words, a matrix can be indexed by a single index as if
it were
> one long vector.
The functions sub2ind and ind2sub hide
the details, letting you
access an array element by element rather than by
slices.
- Paul