rearranging the ind2sub result

3 Ansichten (letzte 30 Tage)
cgo
cgo am 10 Nov. 2015
Kommentiert: Guillaume am 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

Antworten (1)

Guillaume
Guillaume am 10 Nov. 2015
Bearbeitet: Guillaume am 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 Kommentare
cgo
cgo am 10 Nov. 2015
'stable' doesn't seem to work. But it worked when I used 'ascend'. Thank you for your.
Guillaume
Guillaume am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by