Операция с массивами Matlab - PullRequest
2 голосов
/ 27 апреля 2011

У меня есть два массива, a и b, разных размеров.Каждый из них содержит уникальные значения.

Я хочу сравнить оба, и если какое-либо значение массива a находится в массиве b, то я хочу удалить его из b (например, a = [2 3 5], b = [1 8 6 2 3 7], результаты b = [1 8 6 7]).

Как это можно реализовать в Matlab?

Ответы [ 3 ]

7 голосов
/ 27 апреля 2011

Используйте setdiff, чтобы найти элементы в одном наборе, но не в другом.

setdiff(b, a)
5 голосов
/ 27 апреля 2011

Используйте intersect с 3 выходными аргументами, чтобы получить индексы удаляемых элементов:

[c, ia, ib] = intersect(a, b);
b (ib) = [];
3 голосов
/ 27 апреля 2011

Еще одним вариантом является использование функции ISMEMBER для удаления элементов из b, которые являются членами a посредством логического индексирования :

b(ismember(b,a)) = [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...