I don’t know how to do it. I have some matrices with repeated values and I’d like to sort them and get a matrix of sorted indices. For example:
a = [1 4 3 10 8 2];
b = sort(a);
% This doesn't work but I wish it did - that's what I'm looking for.
% idx = find(a==b); idx = [1 6 3 2 5 4];
[v idx] = ismember(b,a);
However, when there are repeated values and NaN this produces errors. Try this:
a = [1 NaN 4 2 10 8 2];
b=sort(a);
[v, i] = ismember(b,a);
Gives [1 7 7 3 6 5 0] which is valid but I need it to be [ 1 4 7 3 6 5 0].
I can deal with this later but it’s going to be much more elegant if it were to return the above result.
sorthas a two output value version that gives you exactly the indices you’re looking for:Outputs
This works correctly with
NaNs as well: