Ordering a column with respect to another column.

1 view (last 30 days)
Hi, I have a matrix with 2 columns and N (=50) rows. The columns have positive real numbers. I intend to order the elements of column 1 keeping column 2 fixed so that column 1 and column 2 become oppositely arranged. In other words, keeping column 2 fixed, re-order column 1 so that
corr(column 1, column 2, 'type', 'Kendall') = -1
Any ideas on how I can proceed with this?
Many Thanks!

Accepted Answer

lvn
lvn on 1 Apr 2014
Edited: lvn on 1 Apr 2014
This should do it:
A=rand(50,2);
[~,J]=sort(A(:,2),'descend');
A(J,1)=sort(A(:,1),'ascend');
corr(A(:,1), A(:,2) , 'type', 'Kendall')
  2 Comments
Trambak
Trambak on 1 Apr 2014
Thanks! In this example, you are re ordering both the columns of A. The idea is to keep the arrangement of column 2 unchanged and re arrange column 1 only so that the rank correlation between the re arranged column 1 and the original column 2 is -1.
For example, A = [1 3; 2 5; 3 7; 4 5; 5 10]. I re-arrange only the first column of A without touching the 2nd column of A. I get
B = [5 3; 3 5; 2 7; 4 5; 1 10]
Trambak
Trambak on 1 Apr 2014
Thanks a lot. This works perfectly. I am actually going to try and use this iteratively on an N x 3 matrix and arrange the jth column so that it is oppositely arranged to the sum of the other 2, 1<= j <= 3.

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!