как отменить сортировку после сортировки данных

#matlab

#matlab

Вопрос:

Я пытаюсь вернуть исходные данные после сортировки данных, вот код, он выполняется очень медленно:

 [Rs,iR] = sort(R,1);
for j = 1:length(Rs)
   for q = 1:length(iR)
     if(iR(q) == j)
         R_org(j,1) = Rs(iR(q));

     end
end
  

После использования метода, показанного в комментарии, я не получаю такого же ответа:

 K>> R = [8;2;7;9;10]

R =

     8
     2
     7
     9
    10

K>> [Rs,iR] = sort(R,1)

Rs =

     2
     7
     8
     9
    10


iR =

     2
     3
     1
     4
     5

K>> R_org = Rs(iR)

R_org =

     7
     8
     2
     9
    10
  

R и R_org не совпадают

Комментарии:

1. Вы ищете R_org = Rs(iR)

2. Исправлена ошибка

3. мой комментарий не то, что вы ищете?

4. Я пытаюсь получить R после его сортировки. Мне нужно вернуться к оригиналу после сортировки массивов с помощью iR, которые я получаю после сортировки R

5. Вам нужно сделать это наоборот: R_org(iR) = Rs . Тогда вы, вероятно, захотите перенести это.

Ответ №1:

По заданному списку, W отсортированному с помощью f , U = W(f) , найдите g такой, W = U(g) что W : f U —> g —,,,> W

Решение:

 [U, f] = sort(W);
[~, g] = sort(f);
  

~ » здесь означает «не волнует»)