Finding sorted rows in a matrix

5 ビュー (過去 30 日間)
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona 2021 年 3 月 20 日
コメント済み: the cyclist 2021 年 3 月 21 日
Hi,
I need to know which rows of a matrix are sorted in ascending without using the "for" cycle. For instance, if i have:
outsx = [
1 1
2 1
3 1
1 2
2 2
3 2
1 3
2 3
3 3]
i want a vector containing indexes of which rows are sorted in ascending order. In this case.
ii= [1 4 5 7 8 9]
Thank you in advance

回答 (3 件)

the cyclist
the cyclist 2021 年 3 月 20 日
For my current understanding of what you want, I believe this works:
ii = find(diff(outsx,[],2)>=0)
  2 件のコメント
Jan
Jan 2021 年 3 月 20 日
I assume an all() is wanted:
ii = find(all(diff(outsx,[],2) >= 0, 2))
the cyclist
the cyclist 2021 年 3 月 21 日
Yes, thanks for catching that

サインインしてコメントする。


the cyclist
the cyclist 2021 年 3 月 20 日
編集済み: the cyclist 2021 年 3 月 20 日
outsx = [
1 1
2 1
3 1
1 2
2 2
3 2
1 3
2 3
3 3];
ii = find(outsx(:,2)>=outsx(:,1))
ii = 6×1
1 4 5 7 8 9
  1 件のコメント
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona 2021 年 3 月 20 日
Hi,
I would need a more general formulation, cosidering matrixes with different number of rows and columns

サインインしてコメントする。


Star Strider
Star Strider 2021 年 3 月 20 日
Two approaches:
for k = 1:size(outsx,1)
TF(k,:) = issorted(outsx(k,:),2,'ascend')
end
Result = find(TF)
TF = outsx(:,2) >= outsx(:,1);
Result = find(TF)
both producing:
Result =
1
4
5
7
8
9
.
  2 件のコメント
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona 2021 年 3 月 20 日
Hi,
I need to perform this check for matrixes nxm, so I need a faster procedure without employing for cycles.
the cyclist
the cyclist 2021 年 3 月 20 日
FYI, just because code has a for loop does not necessarily mean it is slower than other solutions.
Finding a solution that works is the first step (partly to verify that the solution does what you want), and then thinking about readability and optimization follows.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeShifting and Sorting Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by