How to index like A(B(i), i)

1 visualizzazione (ultimi 30 giorni)
Hu
Hu il 17 Ott 2013
Risposto: Azzi Abdelmalek il 17 Ott 2013
For example,
A = rand(3, 5);
B = [3,2,1,2,3];
and I want C like:
for i = 1:size(A, 2)
C(i) = A(B(i), i);
end
Is there any way to get rid of the for-loop? For example, direct access like A(B(i), i).
I thought an anonymous function would help. While, if I define
f = @(x) (A(B(x), x))
C = f(1:size(A,2))
C will turn out to be a 5x5 matrix, while I want is a 1x5 matrix.
Is there any other solution?

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 17 Ott 2013
n=1:size(A,2);
C=A(sub2ind(size(A),B(n),n))

Più risposte (0)

Categorie

Scopri di più su Cell Arrays in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by