A
次元 の Matlab の行列を考えてみましょうMxN
。A
厳密な意味で最小から最大までの要素の同じ順序付けによって特徴付けられるの行を識別するアルゴリズムを構築するために、あなたの助けが必要です。ただし、等式と不等式の区別がないsort
ので使えません。sort
例を挙げて説明しましょう
clear
A=[1 -2 -4; ...
0 -3 5;
1 1 2
1 2 3
3 3 4
10 7 11];
次の点に注意してください。
%A(1,3)<A(1,2)<A(1,1)
%A(2,2)<A(2,1)<A(2,3)
%A(3,1)=A(3,2)<A(3,3)
%A(4,1)<A(4,2)<A(4,3)
%A(5,2)=A(5,1)<A(5,3) %equivalent to A(5,1)=A(5,2)<A(5,3)
%A(6,2)<A(6,1)<A(6,3)
また、行 1 の順序 (厳密な意味で) は他の行の順序とは異なり、行 2 の順序は行 6 の順序と同じであり、行 3 の順序は行 3 の順序と同じです。行 5 のうち、行 4 の順序は他の行の順序とは異なります。
したがって、次の特徴を持つB
次元のベクトルを提供するアルゴリズムが必要です。6x1
%B(2)=B(6) and ~= all other elements of B
%B(3)=B(5) and ~= all other elements of B
%B(1)~= all other elements of B
%B(4)~= all other elements of B
入力される実際の数値はB
完全に任意です。たとえば、私は喜んで手に入れます
B=[3;...
2;...
1;...
4;...
1;...
2];
sort
うまくいかない理由を教えてください
[~,index] = sort(A,2);
[~,~,Bwrong]=unique(index, 'rows');
sort
等号と不等号を区別しないため、行 3、4、5 は同じ順序であると識別されます。
A
実際にはループが非常に大きいため、ループを使用しないことをお勧めします。