How to find the reverse of a permutation vector?

13 Ansichten (letzte 30 Tage)
Po-Yu (Paul) Chen
Po-Yu (Paul) Chen am 4 Jul. 2013
Beantwortet: Jovana Dzunic am 17 Nov. 2019
Dear all,
I have a permutation vector
p = [1 3 2 4];
and I define its corresponding permutation matrix is
P = [1 0 0 0 ; 0 0 1 0 ; 0 1 0 0 ; 0 0 0 1 ]; Then the transpose of P is P' = P.
So what's the corresponding permutation vector of P', said pt?
In this case, pt = p since P' = P.
So, are there any fast way (matlab function) to compute permutation vector pt for a given p, for more general case?
Thanks
Paul

Akzeptierte Antwort

Jan
Jan am 4 Jul. 2013
Do you want this:
p = [1 3 2 4];
pt(p) = 1:length(p);

Weitere Antworten (2)

Jovana Dzunic
Jovana Dzunic am 17 Nov. 2019
Try this code
zerop=1:4;
p=[1,3,2,4];
invp(p)=zerop(1:4)

Hugo
Hugo am 4 Jul. 2013
Notice that
p = P * (1:4)'
The same for pt, i.e.
pt = P' * (1:4)'
For vectors p of length N, just use:
pt= P' * (1:N)'
The transpose in (1:N)' is only there to ensure that (1:N) is a column vector.

Kategorien

Mehr zu Loops and Conditional Statements 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