Сравнение содержимого массива ячеек с вектором
У меня есть следующие ячейки размером 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