Работа с массивами Matlab

#matlab

#matlab

Вопрос:

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

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

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

Ответ №1:

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

 setdiff(b, a)
  

Ответ №2:

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

 [c, ia, ib] = intersect(a, b);
b (ib) = [];
  

Ответ №3:

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

 b(ismember(b,a)) = [];