On Tue, Sep 30, 2014 at 9:28 AM, Stefanie Hasler <

[hidden email]> wrote:

> 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

>

> _______________________________________________

> Help-octave mailing list

>

[hidden email]
>

https://lists.gnu.org/mailman/listinfo/help-octave>

Hi Fii,

First, if your first matrix is 2x100, then it has 2 rows and 100

columns, so your first row would be 100 elements long. Did you mean

that it is 100x2 or that your first column would be [20;200]?

If it is 2x100, and the rows are like you say they are, then one

(horribly inefficient) way is to do something like:

C = diag(B(A(:,1), A(:,2));

I'm sure there is a better ways, but this could be a start.

Hope this helps.

James Sherman

_______________________________________________

Help-octave mailing list

[hidden email]
https://lists.gnu.org/mailman/listinfo/help-octave