[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Selecting values from a matrix via indices in another matrix

**From**: |
James Sherman Jr. |

**Subject**: |
Re: Selecting values from a matrix via indices in another matrix |

**Date**: |
Tue, 30 Sep 2014 12:57:15 -0400 |

On Tue, Sep 30, 2014 at 9:28 AM, Stefanie Hasler <address@hidden> 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*
>* address@hidden*
>* 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