help-octave
[Top][All Lists]

## Re: Selecting values from a matrix via indices in another matrix

 From: Thomas Fehér Subject: Re: Selecting values from a matrix via indices in another matrix Date: Tue, 30 Sep 2014 20:14:42 +0200

```On Tue, 30 Sep 2014 15:28:23 +0200

> Hello,
>
> I have two matrices: One 2x100 matrix A containing rows like [20
> 200], and one 300x300 matrix B containing a range of values from 0 to
> 20.
>
> Is there an easy way to extract a subset of the data contained in B
> as a vector by using the values in A as indices? For example, if
> A(1,:) says (20,20), the vector's first entry should be B(20,20).
>
> Right now I'm using a for-loop, looping through A, and writing the
> values I extract from B into a new vector. It works, but it's not
> pretty or efficient.
>
> Basically, I'd like to be able to write something like B(A), but that
> does not yield the correct output.
>
> Any help would be very appreciated!
>
> Fii
>

This should give the result that you want:

B(sub2ind(size(B),A(1,:),A(2,:)))

The trick is using the linear index of the matrix.

Hope that helps,

Thomas

```