Объединить две матрицы по первичному ключу в Matlab - PullRequest
0 голосов
/ 28 марта 2012

У меня есть две матрицы с первым столбцом, являющимся первичным ключом, как показано ниже:

     | 123  3  234 11 |
     | 124  2  634 22 |
A  = | 125  8  731 33 |
     | 126  8  237 44 |
     | 127  6  235 55 |


     | 124  34  23 |
B  = | 125  45  73 |
     | 126  33  37 |
     | 127  44  25 |

Я хочу новую матрицу C такую, чтобы

  1. find(A(:,2) > 5).В этом случае индексы, которые удовлетворяют этому условию 3,4
  2. Значения первичного ключа для индексов 3 и 4 в A в 125 и 126.
  3. Найти строки, имеющие значения 125 и 126 вВ, который составляет 2,3.
  4. Создайте новую матрицу C, объединяющую значения в A и B с этим первичным ключом.

Матрица C должна выглядеть следующим образом:

C = | 125  8  731 33 45 73 |
    | 126  8  237 44 35 37 |

Как мне это сделатьэтот?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Ваша ключевая функция для использования ISMEMBER .Используйте два выходных индекса:

[idxa, idxb] = ismember(a(:,1), b(:,1));
idxb(idxb==0) = [];

Тогда вы можете объединить

c = [a(idxa,:) b(idxb,:)];

Я надеюсь, что вы можете добавить фильтры и выбрать нужные столбцы самостоятельно.

0 голосов
/ 28 февраля 2013

Панель инструментов статистики содержит функцию под названием JOIN, которая в основном делает то, что вы хотите.

http://www.mathworks.de/de/help/stats/dataset.join.html

Я думаю, что она делает то, что вы ищете.Есть ли это?

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