Связывание и сортировка двух массивов - PullRequest
1 голос
/ 15 мая 2019

Я хочу связать, объединить и отсортировать два массива, которые связаны с двумя другими массивами, например:

A1 = [5, 4, 8, 6] связано с

A2 =[10, 15, 12, 14] и

B1= [5.5, 6.5, 8.5, 4.5] связано с

B2=[11.5, 25.5, 16.5, 49.5]

Я хочу соединить А1 с В1 в С1 и А2 с В2 в С2, и когда я сортирую С1, числа С2 должны двигаться вместе с числами С1, поскольку они связаны между собой. Более четко:

C1=[5, 4, 8, 6, 5.5, 6.5, 8.5, 4.5] 
C2=[10, 15, 12, 14, 11.5, 25.5, 16.5, 49.5]

D1=[4, 4.5, 5, 5.5, 6, 6.5, 8, 8.5 ] % sorted C1
D2 = [15, 49.5, 10, 11.5, 14, 25.5, 12, 16.5 ] % since 4 is linked to 15, 4.5 is linked to 49.5 etc...

Я на самом деле пытаюсь сделать в Matlab то, что очень просто в Excel, у вас есть два столбца, сортировать один, а другой следует.

Вот что я попробовал:

C1=[A1, B1];%join them
C2=[A2, B2];

D=[C1;C2];
D1=sort(D(1,:)); % this does not work

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

1 Ответ

3 голосов
/ 15 мая 2019

Использование sort было правильной идеей.Вы можете получить индексы отсортированного массива, получив второе возвращаемое значение, см. Документацию по sort.

Итак, довольно простое решение должно быть:

D = [C1; C2];         % Build D
[~, idx] = sort(C1);  % Sort C1, but only use the indices of the sorted C1
D = D(:, idx)         % Rearrange D column-wise by the sorted indices

D =
    4.0000    4.5000    5.0000    5.5000    6.0000    6.5000    8.0000    8.5000
   15.0000   49.5000   10.0000   11.5000   14.0000   25.5000   12.0000   16.5000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...