Я пытаюсь сделать следующее в Matlab. Возьмите два списка чисел, возможно, содержащих повторяющиеся элементы, и вычтите один набор из другого набора.
Пример: A = [1 1 2 4]; B = [1 2 4];
Желаемый результат будет A-B = C = [1]
Или, другой пример, E = [3 3 5 5]; F = [3 3 5];
Желаемый результат будет E-F = G = [5]
Хотелось бы сделать это, используя операции множеств Matlab, но их функция setdiff не учитывает повторяющиеся элементы в матрицах. Я ценю, что это правильно с точки зрения теории множеств, но тем не менее хотел бы заняться такими проблемами, как: «У меня есть 3 яблока и 4 апельсина, а вы берете 2 яблока и 1 апельсин, сколько у меня осталось каждого». Мой диапазон возможных значений в этих наборах исчисляется тысячами, поэтому создание большой матрицы для подсчета элементов и последующего вычитания матриц не представляется возможным по соображениям скорости. Мне придется выполнить тысячи этих вычислений с тысячами заданных элементов во время работы с меню графического интерфейса.
Пример того, чего я хотел бы избежать для рассмотрения второго примера выше:
E = [0 0 2 0 2]; F = [0 0 2 0 1];
G = E-F = [0 0 0 0 1];
Спасибо за вашу помощь!