Take a lineout of a matrix, defined by a function

1 vue (au cours des 30 derniers jours)
Noah Chrein
Noah Chrein le 6 Juil 2015
Commenté : Noah Chrein le 6 Juil 2015
Let M be an m by n matrix, let f:(1:m)->(1:n)
how can I create a vector that contains all the points that f hits?
Example:
Let:
M = [1 2 3;
4 5 6;
7 8 9]
and let j = f(i) = i
that is, my output vector should be v = [1 5 9]
or let j = f(i) = 4-i
in this case, v = [7 5 3]
or, more complicated, let j = f(i) = round(1+sqrt(i))
then v = [4 5 9]

Réponse acceptée

Thorsten
Thorsten le 6 Juil 2015
Modifié(e) : Thorsten le 6 Juil 2015
i = 1:size(M,1);
f = @(i) i;
M(sub2ind(size(M), i, f(i)))
f = @(i) 4 - i;
M(sub2ind(size(M), i, f(i)))
f = @(i) round(1+sqrt(i));
M(sub2ind(size(M), i, f(i)))

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by