Question

I possède un réseau de cellules où chaque élément est constitué d'un vecteur d'identificateurs. J'aime calculer l'union de tous les éléments du réseau de cellules. Ceci est ma solution actuelle, mais je pense qu'il peut être vectorisé ou une solution plus élégante:

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
Était-ce utile?

La solution

Si les éléments du tableau de cellules sont des vecteurs de ligne, vous pouvez faire ceci:

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

au lieu si elles sont des vecteurs colonne, puis utilisez:

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

Si vous ne savez pas, ou ils se trouvent être à la fois (certains sont des vecteurs de ligne, certains sont des colonnes), vous pouvez les forcer à être tous les vecteurs de colonne:

encounter_ids = cellfun(@(c)c(:), encounter_ids, 'UniformOutput',false);
union_ids = unique( vertcat(encounter_ids{:}) );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top