How to find the reverse of a permutation vector?

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 日

7 投票

Do you want this:
p = [1 3 2 4];
pt(p) = 1:length(p);

その他の回答 (2 件)

Jovana Dzunic
Jovana Dzunic 2019 年 11 月 17 日

2 投票

Try this code
zerop=1:4;
p=[1,3,2,4];
invp(p)=zerop(1:4)
Hugo
Hugo 2013 年 7 月 4 日

0 投票

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.

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2013 年 7 月 4 日

回答済み:

2019 年 11 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by