Вычислить объединение набора ячеек в Matlab - PullRequest
3 голосов
/ 18 августа 2010

У меня есть массив ячеек, где каждый элемент состоит из вектора идентификаторов. Мне нравится вычислять объединение всех элементов в массиве ячеек. Это мое текущее решение, но я чувствую, что оно может быть векторизованным или иметь более элегантное решение:

union_ids = union(encounter_ids{1},encounter_ids{2});
for i=3:1:numel(encounter_ids);
    union_ids = union(union_ids,encounter_ids{i});
end

1 Ответ

6 голосов
/ 18 августа 2010

Если элементы массива ячеек являются векторами строк, вы можете сделать это:

union_ids = unique( [encounter_ids{:}] );

Вместо этого, если они являются векторами столбцов, используйте:

union_ids = unique( vertcat(encounter_ids{:}) );

Если вы не уверены, или они оба являются обоими (некоторые являются векторами строк, некоторые являются столбцами), то вы можете принудительно заставить их быть всеми векторами столбцов:

encounter_ids = cellfun(@(c)c(:), encounter_ids, 'UniformOutput',false);
union_ids = unique( vertcat(encounter_ids{:}) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...