How to find the reverse of a permutation vector?

13 ビュー (過去 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 Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by