rearranging the ind2sub result

1 visualizzazione (ultimi 30 giorni)
cgo
cgo il 10 Nov 2015
Commentato: Guillaume il 10 Nov 2015
I used [r,c] = ind2sub(size(matrix),idx) and the result gives me something like:
[r,c] =
1 1
2 1
4 1
5 1
1 2
3 2
4 2
5 2
etc.
It is arranged increasingly in the COLUMN part. Is it possible to do the opposite? (Increasing in the ROW part?)
Thanks

Risposte (1)

Guillaume
Guillaume il 10 Nov 2015
Modificato: Guillaume il 10 Nov 2015
You can't get ind2sub to return values in a different order but you can sort the values afterward:
[r, c] = ind2sub(size(m), idx);
[r, order] = sort(r, 'stable');
c = c(order);
Another option is to put both r and c in the same matrix and use sortrows.
[rc(1), rc(2)] = ind2sub(size(m), idx);
rc = sortrows(rc);
  2 Commenti
cgo
cgo il 10 Nov 2015
'stable' doesn't seem to work. But it worked when I used 'ascend'. Thank you for your.
Guillaume
Guillaume il 10 Nov 2015
Sorry, I forgot that it's only unique that has a 'stable' option. Possibly, sort is already stable. In any case, 'ascend' is the default, so you don't need the 2nd argument.
Note that if sort is not stable (i.e. the order of c is not preserved for identical r), then the sortrows option is guaranteed to be.

Accedi per commentare.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by