MATLAB: Replacing ascending numbers with continous numbers

MATLABvector conversionvectorizationvectors

Hello everybody,
I am looking for a fast and efficient way to convert a vector of non continous ascending numbers to continous numbers.
As an example:
The vector
[4 20 35 22 10 49]
should become
[1 3 5 4 2 6]
at the moment I'm using a for loop, look for the lowest number write the runtime index into the result vector and set the position in the original vector to an illegal value. I know this is not the best way but it was the only one I could think of.
Also I'm not doing a single vector at a time but doing this to the columns of a matrix.
Thank you

Best Answer

  • A = [4 20 35 22 10 49];
    B = 1:numel(A);
    [~,C] = sort(A);
    B(C) = B; % Your vector