Matlab, как сравнить каждый элемент матрицы строк с каждым элементом другой матрицы строк? - PullRequest
5 голосов
/ 17 ноября 2009

У меня есть две матрицы в Matlab:

q = [3 4 5];  
w = [5 6 7];

Я хочу сравнить каждый элемент q с w (т.е. 3 по сравнению с 5, 6 и 7). Если он совпадает с любым элементом в w (например, как 5 в q и w), то и q, и w совместно используют 5 в качестве общего ключа.

Как мне вычислить все общие ключи для q и w?

Ответы [ 4 ]

3 голосов
/ 17 ноября 2009
q = [3 4 5];
w = [5 6 7];

%# @sellibitze
intersect(q,w)

%# @Loren
q( ismember(q,w) )

%# Me :)
q( any(bsxfun(@eq, q, w'),1) )
3 голосов
/ 17 ноября 2009

Попробуйте

>> x = intersect(q,w)

x = 

    5

Эта функция обрабатывает входные векторы как наборы и возвращает пересечение наборов. Я думаю, это то, что вы хотели знать. Есть ли совпадение да / нет? если x пусто (цифра (x) == 0), совпадений не было.

2 голосов
/ 17 ноября 2009

Проверьте ismember, особенно второй и третий выходные аргументы, если вам нужна дополнительная информация о совпадениях.

2 голосов
/ 17 ноября 2009
[Q W] = meshgrid(q, w)
% Q =
%      3     4     5
%      3     4     5
%      3     4     5
% W =
%      5     5     5
%      6     6     6
%      7     7     7
Q == W
% ans =
%      0     0     1
%      0     0     0
%      0     0     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...