create vector from matrix without loop

6 Ansichten (letzte 30 Tage)
Sebastian
Sebastian am 12 Mai 2013
Hi there, I have a quick question concerning MATLAB: given A matrix A(mxn) and a Vector B(m,1) I want to create a vector C(m,1) in which each row element is the row element of A from a comlumn indexed by B. So suppose A = [ 1 2; 3 4; 5 6] and B = [2 1 1]' than C should be C = [2 35]. How can I do this using as few computational power as possible (without loops?) ?
cheers Sebastian

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 12 Mai 2013
A = [ 1 2; 3 4; 5 6]
B = [2 1 1]'
C=A(sub2ind(size(A),(1:size(A,1))',B))

Weitere Antworten (2)

Matt J
Matt J am 12 Mai 2013
Bearbeitet: Matt J am 12 Mai 2013
C=A( sub2ind([m,n],1:m,B') )

Sebastian
Sebastian am 13 Mai 2013
Thanks guys!

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by