How to find the reverse of a permutation vector?

조회 수: 27 (최근 30일)
Po-Yu (Paul) Chen
Po-Yu (Paul) Chen 2013년 7월 4일
답변: Jovana Dzunic 2019년 11월 17일
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

채택된 답변

Jan
Jan 2013년 7월 4일
Do you want this:
p = [1 3 2 4];
pt(p) = 1:length(p);

추가 답변 (2개)

Jovana Dzunic
Jovana Dzunic 2019년 11월 17일
Try this code
zerop=1:4;
p=[1,3,2,4];
invp(p)=zerop(1:4)

Hugo
Hugo 2013년 7월 4일
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.

카테고리

Help CenterFile Exchange에서 Mathematics and Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by