rearranging the ind2sub result
1 view (last 30 days)
Show older comments
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
0 Comments
Answers (1)
Guillaume
on 10 Nov 2015
Edited: Guillaume
on 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 Comments
Guillaume
on 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.
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!