Effacer les filtres
Effacer les filtres

Finding sorted rows in a matrix

2 vues (au cours des 30 derniers jours)
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona le 20 Mar 2021
Commenté : the cyclist le 21 Mar 2021
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

Réponses (3)

the cyclist
the cyclist le 20 Mar 2021
For my current understanding of what you want, I believe this works:
ii = find(diff(outsx,[],2)>=0)
  2 commentaires
Jan
Jan le 20 Mar 2021
I assume an all() is wanted:
ii = find(all(diff(outsx,[],2) >= 0, 2))
the cyclist
the cyclist le 21 Mar 2021
Yes, thanks for catching that

Connectez-vous pour commenter.


the cyclist
the cyclist le 20 Mar 2021
Modifié(e) : the cyclist le 20 Mar 2021
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 commentaire
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona le 20 Mar 2021
Hi,
I would need a more general formulation, cosidering matrixes with different number of rows and columns

Connectez-vous pour commenter.


Star Strider
Star Strider le 20 Mar 2021
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 commentaires
Marco Gaetani d'Aragona
Marco Gaetani d'Aragona le 20 Mar 2021
Hi,
I need to perform this check for matrixes nxm, so I need a faster procedure without employing for cycles.
the cyclist
the cyclist le 20 Mar 2021
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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by