Can anyone help : rank each row of a matrix
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
Respuestas (1)
Jan
el 5 de Feb. de 2016
Editada: Jan
el 14 de Feb. de 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 comentarios
Jan
el 9 de Feb. de 2016
Editada: Jan
el 9 de Feb. de 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
el 14 de Feb. de 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.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!