Can anyone help : rank each row of a matrix

3 views (last 30 days)
Qian cao
Qian cao on 5 Feb 2016
Commented: Jan on 14 Feb 2016
Hi all, If I have a matrix like
A=
0.2 NaN 0.8 0.8
-0.2 1 0.3 0.2
0.2 -0.3 0.2 2
0.7 -0.1 -0.4 0.7
NaN 0.2 NaN 0.9
How do I get a resulting matrix B which ranks each row of A and the result shows like this ... Please Pay attention to row 3. I am looking for a complete answer for this as I am new in Matlab. Thank you a lot !
B=
1 NaN 2 2
1 4 3 2
2 1 2 4
3 2 1 3
NaN 1 NaN 2
  2 Comments
Jan
Jan on 5 Feb 2016
You forgot to mention the definition of "ranking". There is an infinite number of possible methods to obtain B based on A.
Stephen23
Stephen23 on 5 Feb 2016
Do not post duplicate questions:
You can simply add a comment to your original question.

Sign in to comment.

Answers (1)

Jan
Jan on 5 Feb 2016
Edited: Jan on 14 Feb 2016
A guess:
A = [0.2 NaN 0.8 0.8; ...
-0.2 1 0.3 0.2; ...
0.2 -0.3 0.2 2; ...
0.7 -0.1 -0.4 0.7; ...
NaN 0.2 NaN 0.9];
B = nan(size(A));
for k = 1:size(A, 1)
valid = isfinite(A(k, :));
Ak = A(k, valid);
[~, ~, iC] = unique(Ak, 'sorted'); % [EDITED, 3rd instead of 2nd output]
B(k, valid) = Ak(iC);
end
  3 Comments
Jan
Jan on 9 Feb 2016
Edited: Jan on 9 Feb 2016
@Qian cao: Please explain this with any details. Do you get an error message? Are you able to idenitfy the error and fix it by your own?
Did you see, that I asked you for a definition of "ranking"? So please give us a chance to answer efficiently without guessing, what you want and observe.
Jan
Jan on 14 Feb 2016
@Qian cao: What a pitty that you do not answer my question for clarification. Nevertheless, I've edited my answer. Perhaps it is "working" now.

Sign in to comment.

Categories

Find more on Particle & Nuclear Physics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!