Сравнение содержимого массива ячеек с вектором

У меня есть следующие ячейки размером 1 на 3:

Y = {[2 3 4 5 8],[1 2 5 7 8],[3 4 7 8]}

и следующий вектор 1 на 8:

X = [1 2 3 4 5 6 7 8]

Используя форму логического индекса, я хотел бы сравнить вектор с каждым содержимым массива ячеек. Например, сравнивая X с Y(1,1) даст следующее:

[0 1 1 1 1 0 0 1]

аналогично, сравнивая X с Y(1,2) даст следующее:

[1 1 0 0 1 0 1 1]

И сравнивая X с Y(1,3) даст следующее:

[0 0 1 1 0 0 1 1]

Следовательно, у меня должен быть следующий вывод:

[0 1 1 1 1 0 0 1
 1 1 0 0 1 0 1 1
 0 0 1 1 0 0 1 1]

Благодарен за любую форму помощи.

1 ответ

Решение

Использование cellfun применять ismember к содержимому каждой ячейки:

result = cellfun(@(c) ismember(X, c), Y, 'UniformOutput', false); % gives cell array
result = vertcat(result{:}); % vertically concatenate cells' contents into a matrix
Другие вопросы по тегам