我试图获得2D数组中的最小值,但保持2D数组的顺序,例如:
如果我有阵列
7 | 7
2 | 3
8 | 0
3 | 7
5 | 5
我想订购它,这样它就会显示
2 | 3
8 | 0
3 | 7
5 | 5
7 | 7
我看了mink
和sortrows
,但似乎都没有给出我需要的输出。
如有任何帮助,我们将不胜感激!
您可以使用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);
对于更新的问题,您首先需要确定要移动到矩阵顶部的行。一旦你知道了这一点,你就可以简单地重新排列矩阵,这样这一行以及之后发生的所有事情都会被放在第一位。
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