Azzera filtri
Azzera filtri

Take a lineout of a matrix, defined by a function

3 visualizzazioni (ultimi 30 giorni)
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]

Risposta accettata

Thorsten
Thorsten il 6 Lug 2015
Modificato: Thorsten il 6 Lug 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)))

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by