3

我有一个单元格数组,其中每个元素都由一个 id 向量组成。我喜欢计算元胞数组中所有元素的并集。这是我目前的解决方案,但我觉得它可以被矢量化或者有一个更优雅的解决方案:

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
4

1 回答 1

6

如果元胞数组元素是行向量,您可以这样做:

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{:}) );
于 2010-08-17T21:31:50.023 回答