relabel the elements in each column according to the magnitude of these elements in an array
1 次查看(过去 30 天)
显示 更早的评论
Hi, I have
a=[4 5;
5 1;
6 4;
7 7]
I want to relabel the elements in each column according to the magnitude of these elements in the column to become
a=[1 3;
2 1;
3 2;
4 4]
How can I do this? Thank you.
0 个评论
采纳的回答
Star Strider
2014-6-5
编辑:Star Strider
2014-6-5
This works:
a=[4 5; 5 1;6 4; 7 7]
[as,ai] = sort(a,1);
b = [ai(ai(:,1),1) ai(ai(:,2),2)]
produces:
b =
1 3
2 1
3 2
4 4
It sorts the first and second columns independently. Then, to get the column indices as you want them, it maps each set of column indices to its own sorted indices. A bit complicated to explain, but taking the reference to the columns of b apart and looking at its components will reveal how it works.
12 个评论
Star Strider
2014-6-7
My pleasure!
It’s an unusual enough request that it took some time to come up with solution. When I was Answering another Question involving unique, it occurred to me that the unique function actually does exactly what you want.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!