Как выбрать строку из таблицы, а затем добавить ее в другую таблицу - PullRequest
0 голосов
/ 13 апреля 2019

ребята, у меня есть две матрицы, как показано ниже. Я хочу сравнить второй столбец первой матрицы с первым столбцом второй матрицы. Если они одинаковые, я хочу скопировать эту строку в другую матрицу. Я привел пример ниже. Большое вам спасибо.

  Matrix 1                               Matrix 2 
3323    918                     918 2   12  13
2522    842                     918 2   9   13
3049    918                     918 2   6   13
1143    40                      918 2   3   1
204     1                       842 2   3   8
1663    362                     842 3   12  9
2079    362                     842 3   9   3
770     1                       40  3   9   6
2189    842                     40  3   6   9
                                40  3   3   5

Expected Result
918 2   12  13
918 2   9   13
918 2   6   13
918 2   3   1
842 2   3   8
842 3   12  9
842 3   9   3
918 2   12  13
918 2   9   13
918 2   6   13
918 2   3   1
40  3   9   6
40  3   6   9
40  3   3   5
842 2   3   8
842 3   12  9
842 3   9   3

1 Ответ

0 голосов
/ 13 апреля 2019

Поскольку ваш метод генерации result_Matrix (назовите его RM) является немного описательным, метод также будет немного сложным. Сначала вы должны проанализировать Marix 2 (я назову это M2). Вы можете использовать простой цикл:

i=1;
M2_indexes=[1];
for idx=1:size(M2)
    if M2(idx)~=M2(M2_indexes(i))
        M2_indexes=[M2_indexes, idx];
        i=i+1;
    end
end
M2_indexes=[M2_indexes,(size(M2,1)+1)];

Теперь ваша программа знает, что значение изменяется на [1 5 8], а последний индекс в диапазоне матрицы - [11]. Пришло время итеративно перебрать M1. Это очень похоже на предыдущий шаг: MR = [];

for idx=1:size(M1)
    for idy=1:size(M2_indexes,2)
        if M2(M2_indexes(idy))==M1(idx,2)
            MR=[MR; M2(M2_indexes(idy):(M2_indexes(idy+1)-1),1:4)];
        end
    end
end

И результат, как вы описали:

MR =

   918     2    12    13
   918     2     9    13
   918     2     6    13
   918     2     3     1
   842     2     3     8
   842     3    12     9
   842     3     9     3
   918     2    12    13
   918     2     9    13
   918     2     6    13
   918     2     3     1
    40     3     9     6
    40     3     6     9
    40     3     3     5
   842     2     3     8
   842     3    12     9
   842     3     9     3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...