我试图在2D数组中获得最小值,但保持2D数组的顺序,例如:
如果我有数组
7 | 7
2 | 3
8 | 0
3 | 7
5 | 5
我想订购它以便显示
2 | 3
8 | 0
3 | 7
5 | 5
7 | 7
我看过mink
和sortrows
,但似乎都没有提供我需要的输出。
对此将提供任何帮助!
答案 0 :(得分:4)
您可以使用circshift
以所需的方式更改元素的顺序。首先找到最小元素的索引,然后移动以使元素位于顶部:
M = [7,7 % example data from OP
2,3
8,0
3,7
5,5];
[~,ind] = min(M(:,1));
M = circshift(M,1-ind,1);
答案 1 :(得分:1)
对于更新后的问题,您首先需要确定要移至矩阵顶部的行。一旦知道这一点,您就可以简单地重新排列矩阵,以便将该行及其后发生的所有操作都放在第一位。
A = [7 7
2 3
8 0
3 7
5 5]
[~,index] = min(A(:,1)); % Identify row which should occur first
A = A([index:end,1:(index-1)], :) % Rearrange rows
A =
2 3
8 0
3 7
5 5
7 7