#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);
(« ~
» здесь означает «не волнует»)