2010-08-17 33 views
3

我有一個單元陣列,其中每個元素由一個ids向量組成。我喜歡計算單元格數組中所有元素的聯合。這是我目前的解決辦法,但我覺得它可以矢量或有更優雅的解決方案:在Matlab中計算單元陣列的並集

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 

回答

6

如果單元格數組元素是行向量,你可以這樣做:

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

,而是如果他們是列向量,然後使用:

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

如果你不確定,或者他們碰巧兩者(有些是排vecto rs,有些是列),那麼你可以強制它們成爲所有列向量:

encounter_ids = cellfun(@(c)c(:), encounter_ids, 'UniformOutput',false); 
union_ids = unique(vertcat(encounter_ids{:})); 
+1

???錯誤使用==> horzcat CAT參數維度不一致。 – Elpezmuerto 2010-08-17 21:35:40