Сортировать матрицу в соответствии с порядком в другой матрице - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь отсортировать массив на основе другого массива. Я попробовал метод sort с возвращением индекса, но он как-то странно себя ведет.

y = [1 2 3; 2 3 4] 
x = [1 3 4; 2 2 3] 
[yy, ii] = sort(y,'descend');

yy =
   2     3     4   
   1     2     3

ii =
   2     2     2
   1     1     1

Но моя x(ii) - это не матрица, отсортированная по y.

x(ii) =  
      2     2     2
      1     1     1

Я ожидаю, что матрица будет:

x(ii) =

    2     2     3 
    1     3     4

Как мне отсортировать матрицу x по другой матрице y?

1 Ответ

0 голосов
/ 16 сентября 2018

ii - это строки подписки, но вы вводите их как линейные индексы.Вам необходимо преобразовать их в соответствующие линейные индексы, прежде чем продолжить, т.е.

>> szx =  size(x);
>> x(sub2ind(szx, ii, repmat(1:szx(2),szx(1),1)))

ans =

     2     2     3
     1     3     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...