Finding sorted rows in a matrix
古いコメントを表示
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
2021 年 3 月 20 日
For my current understanding of what you want, I believe this works:
ii = find(diff(outsx,[],2)>=0)
2 件のコメント
Jan
2021 年 3 月 20 日
I assume an all() is wanted:
ii = find(all(diff(outsx,[],2) >= 0, 2))
the cyclist
2021 年 3 月 21 日
Yes, thanks for catching that
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))
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
2021 年 3 月 20 日
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.
カテゴリ
ヘルプ センター および File Exchange で Shifting and Sorting Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!