help-octave
[Top][All Lists]

## RE: Matrix index, Please e-mail back.

 From: Jorgen Andersson Subject: RE: Matrix index, Please e-mail back. Date: Wed, 6 Dec 2006 08:33:04 -0800

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

From: Paul Kienzle [mailto:address@hidden
Sent: Tue 12/5/2006 6:16 PM
To: Jordi Gutierrez Hermoso
Subject: Re: Matrix index, Please e-mail back.

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

reply via email to